Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
vom terminal auf das adressbuch zugreifen
vom terminal auf das adressbuch zugreifen
Mac51.de
03.08.06
16:41
hi,
ich würde gerne vom terminal - genauergesagt aus einem perl-script heraus - auf das adressbuch bzw. die datenbank des adressbuchs zugreifen.
ich würde den namen zu einer nummer herausfinden wollen.
weiss jemand wie ich sowas am besten anstelle?
Hilfreich?
0
Kommentare
_mäuschen
03.08.06
16:54
z.Bsp.
osascript -e 'tell app "Address Book" to get the name of every person' | perl -pe 's/, /\n/g' | sort | uniq -d
anpassen an Deine Bedürfnisse
von Apple
Hilfreich?
0
Mac51.de
03.08.06
17:07
du bist echt immer mein retter wenns um sowas geht mäuschen, leider weiss ich trotzdem nciht was ich anpassen muss.
ich nehme an dass ich das "every person" durch irgendwas ersetzen muss damit er mir nicht alle namen sondern nur di enamen der personen mit der telefonnumer XYZ ausgibt, aber wie?
Hilfreich?
0
Mac51.de
03.08.06
17:34
tell application "Address Book"
set the_phone to "XYZ"
set the_people to (get every person whose phone contains the_phone)
return the_people
end tell
das haben wir bisher, aber wenn wir das ausführen bekommen wir ne fehlermeldung:
Adressbuch hat einen fehler erhalten: every person whose phone contains "XYZ" kann nicht in typ reference umgewandelt werden
Hilfreich?
0
Mac51.de
03.08.06
17:38
das apple script scheint schonmal zu funktionieren:
tell application "Address Book"
set the_phone to "XYZ"
set the_people to (get name of every person whose value of phones contains the_phone)
return the_people
end tell
Hilfreich?
0
Klaus Major
03.08.06
17:48
Geht das vielleicht auch mir direktem Zugriff auf NUR die Adressen, also OHNE daß sich Addressbook öffnet?
Oder anders gefragt, wo legt AB die Einträge ab? Würde schon reichen
Gruß
Klaus
Hilfreich?
0
Mac51.de
03.08.06
18:01
das adressbuch legt die in einer externen datei ab, die ist aber nicht plaintext, du kannst es also nciht einfach auslesen und musst es übers adressbuch machen.
zu meinem scritp habe ich noch ne frage:
weiss jemand wie ich es hinbekomme, dass alle nummern erkannt werden, die "the_phone" enthalten. jetzt werden nur die namen zu den nummern ausgegeben, die genau the_phone entsprechen
Hilfreich?
0
Klaus Major
03.08.06
18:35
Kannst Du mir trotzdem verraten, wo sich diese nichtPlainText Datei befindet?
Hilfreich?
0
_mäuschen
03.08.06
19:59
Klaus Major, schau mal nach in ~/Library/Application Support/AdressBook
Mac51.de, habe die Frage nicht so ganz mitbekommen. Aber ev. hilft Dir dies weiter
tell application "Address Book"
set the_phone to "
phone_number
"
set i to (count of people)
repeat with k from 1 to i
set n to last name of person k
try
set p to value of phone 1 of person k
on error
set p to ""
end try
try
set pp to value of phone 2 of person k
on error
set pp to ""
end try
if ((p as string) is the_phone) or ((pp as string) is the_phone) then
set second_phone to value of phone 2 of person k
set the_people to name of person k
end if
end repeat
return {the_people, the_phone, second_phone}
end tell
Hilfreich?
0
Klaus Major
03.08.06
20:05
Jau, danke!
Hätte ich auch mal wieder selber drauf kommen können!
Aber wieso wieder 5,1 MB für meine lächerlichen 44 Adressen (OHNE ein einziges Bild)?
Und wieso nicht im XML-Format wie so viele andere Daten von OS X?
Fragen, Fragen, Fragen...
Hilfreich?
0
tuxatos
03.08.06
20:16
_mäuschen
Zum einen ist das Skript sehr langsam und zum anderen findet es auch nur die Nummern, die komplette Telefonnummer sind.
da ist folgendes Skript um einiges schneller und kleiner und macht das gleiche:
tell application "Address Book"
set theNumber to "0123123456"
set thePeople to (get name of every person whose value of phones contains theNumber)
return thePeople
end tell
Aber das Problem ist, dass eine Suche nach nur einem Teil der Telefonnummer nicht möglich ist. Bswp. ohne Vorwahl.
Grüße Markus
Hilfreich?
0
_mäuschen
03.08.06
20:26
Ja, richtig, ist langsam.
Aber Mac51.de fragte nach einer Möglichkeit für alle Nummern eines Kontakts
Und Teile der Nummer kann man auch so abfangen
if the_phone is
in
(p as string) or the_phone is
in
(pp as string) then
Hilfreich?
0
tuxatos
03.08.06
20:33
Das Beispiel von mir geht mit allen Nummern eines Kontaktes aber halt leider nicht mit Teilen von dieser.
Das macht dein Skript nach der Modifikation richtig - das stimmt - aber leider zu langsam. Hast du 'ne Idee, wie man die schnelle Variante so anpassen kann, dass es auch nach Teilen der Nummer sucht?
Grüße Markus
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.