Adressbuch auslesen

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von balufreak, 15.07.2005.

  1. balufreak

    balufreak Thread Starter MacUser Mitglied

    Beiträge:
    1.560
    Zustimmungen:
    28
    Registriert seit:
    12.10.2003
    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?
     
  2. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    Registriert seit:
    24.03.2003
    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?
     
  3. balufreak

    balufreak Thread Starter MacUser Mitglied

    Beiträge:
    1.560
    Zustimmungen:
    28
    Registriert seit:
    12.10.2003
    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.
     
  4. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    Registriert seit:
    24.03.2003
    Das macht natürlich Sinn. Ein Stück Benutzerfreundlichkeit kann einem Skript nicht schaden. Diesen Ansatz werde ich mir merken.
     
Die Seite wird geladen...

Diese Seite empfehlen