Adressbuch auslesen

balufreak

balufreak

Aktives Mitglied
Thread Starter
Dabei seit
12.10.2003
Beiträge
1.563
Reaktionspunkte
28
Hallo leute!

Ich habe mal folgenden Code
Code:
tell application "System Events" to get name of every process
set ProcessList to result
if ProcessList contains "Address Book" then
	set running to true
else
	set running to false
end if
tell application "Address Book"
	set allData to ""
	repeat with everyPerson in every person
		if last name of everyPerson is "missing value" then
			set the personName to first name of everyPerson
		else
			set the personName to last name of everyPerson & " " & first name of everyPerson
		end if
		
		repeat with everyPhone in every phone of everyPerson
			if label of everyPhone contains "mobile" then
				set allData to allData & personName & "," & value of everyPhone & ";"
			end if
		end repeat
	end repeat
	if running is false then
		quit application "Address Book"
	end if
	return allData
end tell

Mit diesem Code möchte ich alle Leute in meinem Adressbuch mit einer Mobilen telefonnummer auslesen. Dies geht soweit auch. Nun aber, setzt es mir den Nachnamen von einem Eintrag der keinen Nachnamen hat, auf "missing value" wie kann ich das unterbinden? so dass dann nur der Vorname steht?
 
balufreak schrieb:
Mit diesem Code möchte ich alle Leute in meinem Adressbuch mit einer Mobilen telefonnummer auslesen. Dies geht soweit auch. Nun aber, setzt es mir den Nachnamen von einem Eintrag der keinen Nachnamen hat, auf "missing value" wie kann ich das unterbinden? so dass dann nur der Vorname steht?

Ich habe dein Beispiel extra nicht als Ausgangspunkt genommen, da ich selbst erst probieren musste.
Wenn du in der Zusammenstellung der ersten Liste gleich eine Bedingung verwendest, bringt das einen enormen Zeitvorteil und du musst nicht die Liste mit allen Adressbuch-Einträgen abarbeiten.

PHP:
tell application "Address Book"
	set MobilListe to every person whose label of phones contains "mobile"
	set MobilInfo to ""
	repeat with oneP in MobilListe
		set Trenner to ", "
		set Nachname to last name of oneP
		if Nachname = missing value then
			set Nachname to ""
			set Trenner to ""
		end if
		set Vorname to first name of oneP
		if Vorname = missing value then set Vorname to ""
		set Mobilnummer to (value of phones of oneP whose label is "mobile")
		set PersInfo to Nachname & Trenner & Vorname & " - " & Mobilnummer & return
		set MobilInfo to MobilInfo & PersInfo
	end repeat
end tell
MobilInfo

Sonstiges:

if last name of everyPerson is "missing value" then

Deine Bedingung wird wohl nie zutreffen, da missing value kein Textwert ist. Du musst das also in deiner Bedingung auch ohne Anführungszeichen schreiben.

Was mich noch wundert: Warum beendest du ein NICHT laufendes Programm?
 
Snow schrieb:
Was mich noch wundert: Warum beendest du ein NICHT laufendes Programm?

Wenn das Adressbuch nicht läuft, wird es durch tell application Adress Book gestartet. Darum beende ich es wieder. Wenn es schon vorher gestartet wurde, wird es auch nicht beendet.
 
balufreak schrieb:
Wenn das Adressbuch nicht läuft, wird es durch tell application Adress Book gestartet. Darum beende ich es wieder. Wenn es schon vorher gestartet wurde, wird es auch nicht beendet.

Das macht natürlich Sinn. Ein Stück Benutzerfreundlichkeit kann einem Skript nicht schaden. Diesen Ansatz werde ich mir merken.
 
Zurück
Oben Unten