1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Mit Automator - Intelligente Adressbuch Gruppen erstellen lassen

Dieses Thema im Forum "Dienstprogramme & Utilities" wurde erstellt von ml.User, 22.03.10.

  1. ml.User

    ml.User Gloster

    Dabei seit:
    10.01.07
    Beiträge:
    63
    Hi,

    ich ordne auf meinem iMac meine Kontakte unter anderem mit intelligenten Gruppen. Somit bleiben diese Gruppen immer aktuelle wenn neue Kontakte mit bestimmten Eigenschaften hinzukommen. Leider synchronisiert MobileMe keine intelligenten Gruppen auf seine Wolke bzw. auch nicht auf das iPhone. "Normale" Gruppen werden jedoch synchronisiert.

    Nun habe ich mir gedacht das der Automator evtl. dabei behilflich sein kann. Ich habe mir folgendes überlegt und wollte fragen ob mir jemand erklären kann wie das genau funktionieren beim Automator funktionieren könnte.

    > Automator filtert bestimmte Kriterien (Gibt es bereits in Automator: Bibliotek > Kontakte > Adressbuch-Objekt
    filtern")
    > Automator erstellt mit diesen gefilterten Kriterien verschiedene Gruppen
    (z.B. alle Kontakte mit dem Begriff "Kollegen" im Notizfeld in eine Gruppe kopieren)
    > Automator script abspeichern und jeden Sonntag z.B. einmal durchlaufen lassen
    > Am Sonntag soll das Script entweder die Gruppen löschen und neu erstellen oder Kontakte neu hinzufügen
    die während der Woche erstellt worden sind

    Ist so etwas möglich?

    Viele Grüße,
    ml
     
  2. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Hallo!
    Wenn du schon so nett fragst, dann möchte ich dir gerne helfen :)

    Eigentlich hast du dein Anliegen klar formuliert, dennoch habe ich eine Verständnisfrage:
    In welchem Fall sollen die Gruppen wieder gelöscht werden? Wenn sie "leer" sind?

    Vorweg: Eigentlich würde man das "professionell" mit einem Skript und launchd erstellen (Die Freeware Anwendung Lingon würde einem helfen, das einzurichten... )

    Der Automator hat nicht die nötigen Aktionen in seiner Bibliothek, um das "fertig vorformuliert" zu erstellen.
    Ich gebe dir jetzt mal zwei Lösungswege:

    Neuer Workflow mit Vorlage "iCal Erinnerung":
    1. - Aktion Adressbuch-Kontakte suchen (nicht filtern! :) )
    2. - Aktion AppleScript ausführen
      Code:
      on run {input, parameters}
      	
      	tell application "Address Book"
      		if not (exists group "Test") then make new group with properties {name:"Test"}
      		repeat with thePerson in input
      			add thePerson to group "Test"
      		end repeat
      		save
      		
      	end tell

    "Test" kannst du ja ersetzen.
    Wenn du den Workflow speicherst, wurde iCal ein neues Ereignis hinzugefügt (mit dem aktuellen Zeitstempel)
    Öffne iCal und bearbeite es (Zeit, Kalender, wiederholen täglich oder wöchentlich oder wie auch immer).

    Neuer Workflow mit Vorlage "Ordneraktion":

    Die gleichen Aktionen wie eben, aber beim Speichern diesem Ordner angehängt:
    ~/Library/Application Support/AddressBook/Metadata

    Jetzt wird jedes mal, wenn du am Mac dem Adressbuch einen Kontakt hinzufügst, der Ablauf gestartet.
    Vorteil: Immer aktuell und das Adressbuch ist eh gerade geöffnet (da es ja sonst unweigerlich durch den Workflow geöffnet würde)
    Nachteil: Ordneraktionen haben den Ruf, nicht ganz zuverlässig zu sein und starten eventuell manchmal nicht. Zumindest galt das für 10.5. In 10.6 soll das angeblich behoben sein...
    Ob das auch funktioniert, wenn das Adressbuch über MobileMe neue Daten erhält, weiß ich nicht -- meinem Verständnis nach sollte es aber..

    ------------------------------------------

    Für weitere zu erstellende Gruppen wiederholst du die zwei Aktionen einfach in dem Workflow (und passt sie an)
    Achte aber darauf, dass sie nicht den "Input" der vorherigen erhalten!
    Also in den Kopf der dritten (und fünften usw.) Aktion einen Rechtsklick und Eingabe ignorieren wählen

    Gruß
     
  3. ml.User

    ml.User Gloster

    Dabei seit:
    10.01.07
    Beiträge:
    63
    Super!

    Vielen lieben Dank für die ausführliche Beschreibung. Leider tritt noch ein Fehler bei der Methode 1 auf.

    Bei ausführen des Scripts erscheint: Es wurde „Zeilenende, etc.“ erwartet, aber ein „Skiptende“ wurde gefunden.
     
  4. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Stimmt. Ich habe eine Zeile vergessen ...

    Code:
    on run {input, parameters}
    	
    	tell application "Address Book"
    		if not (exists group "Test") then make new group with properties {name:"Test"}
    		repeat with thePerson in input
    			add thePerson to group "Test"
    		end repeat
    		save
    		
    	end tell
    	
    	return input
    end run
     
  5. ml.User

    ml.User Gloster

    Dabei seit:
    10.01.07
    Beiträge:
    63
    Fast perfekt!

    Hi Sedna,

    vielen Dank! Das funktioniert ja schon fast perfekt. Jetzt hab ich noch eine kleine Frage.
    Kann man beim ausführen des Scripts die Gruppe davor leeren / Kontakte in der Gruppe
    löschen und diese neu einspielen?

    Wenn im Moment ein Kontakt auf Status "Beruflich" ist und ich irgendwann "Beruflich"
    entferne und "Privat" eintrage dann beleibt er leider trotzdem in "Beruflich" stehen.

    Das war der Grund meiner ersten Frage wann eine Gruppe bzw. deren Inhalt davor gelöscht
    werden sollte. Mein aktuelles nicht ganz funktionstüchtiges (iCalBirthdays) wendet diese
    Technik bei jedem neuen "Refresh" an. Somit würde er alle löschen und neu einspielen.

    Viele Grüße und ein schönen Abend!
    ml
     
  6. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Hallo!

    Hier die Variante:
    Falls schon eine Gruppe mit dem Namen existiert, so wird sie gelöscht.
    Ich habe noch eine Variable eingefügt, so ist das weniger Schreibarbeit (man muss nur noch ein mal den richtigen Namen eintragen)

    Code:
    on run {input, parameters}
    	
    	tell application "Address Book"
    		set theGroup to "Test"
    		try
    			delete group theGroup
    		end try
    		make new group with properties {name:theGroup}
    		repeat with thePerson in input
    			add thePerson to group theGroup
    		end repeat
    		save
    		
    	end tell
    	
    	return input
    end run
    Gruß
     
  7. ml.User

    ml.User Gloster

    Dabei seit:
    10.01.07
    Beiträge:
    63
    Hi sedna,

    vielen lieben Dank! Funktioniert hervorragend!

    Das Script wird jetzt via iCal jeden Sonntag bei mir ausgeführt. Gibt es den die Möglichkeit das das ganze im Hintergrund ausgeführt wird ohne das der Automator
    sichtlich im Dock erscheint? Ich habe noch einen Befehl hinzugefügt das es automatisch geschlossen wird. (tell application "Automator" to quit)
    Ich habe bei dem iCalBirthdays Script gesehen das dieses nur oben in der Taskleiste kurz angezeigt wird. Kann man das hier auch machen?

    Vielen Dank für die große Hilfe!

    Viele Grüße,
    ml
     
  8. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Hallo!

    Freut mich und ja, das geht!

    Erstelle deinen Arbeitsablauf neu. Diesmal aber nicht als iCal Plug-In, sondern mit der Vorlage "Arbeitsablauf". Und ohne den Zusatz "tell app Automator to quit"!
    Speichere ihn im Dateiformat "Arbeitsablauf" (.workflow) in
    Wähle die Datei im Finder an. Öffne das Infofenster (cmd-i) und ändere "Öffnen mit -> Automator Runner.app"
    Dann wie gehabt ein neues iCal Ereignis erstellen mit Erinnerung: Datei öffnen -> dein.workflow

    Zur Erklärung: Automator Runner kann .workflows ausführen (mit dem Standard Programm Automator würden sie geöffnet werden)

    Übrigens: Was du im Dock gesehen hast, war nicht der Automator, sondern das iCal Plug-In, welches aber ein ganz ähnliches Icon hat.
    In dem oben angegebenen Ordner wirst du es (mit der Endung .app) liegen sehen. Vergleiche mal die Icons
    :)


    - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    Edit:
    Es gibt noch einen anderen Weg.
    Das gespeicherte iCal Plug-In liegt ja als .app in dem oben angegebenen Ordner. Mit einem Rechsklick auf die Datei kannst Du dir den Paketinhalt zeigen lassen. Im Ordner Contents liegt die Datei Info.plist. In dieser kann man einen Wert ändern, dann wird das Programm nicht mehr im Dock angezeigt.
    Mal davon ausgehend, dass du keinen Plist Editor installiert hast, kann man die Datei auch mit TextEditor öffnen.
    Suche folgende Zeilen
    und ändere sie in
    Mit dem Programm Terminal und dem Befehl defaults könnte man das auch ändern (LSUIElement 1)



    Gruß
     
    #8 sedna, 29.05.10
    Zuletzt bearbeitet: 29.05.10
  9. ml.User

    ml.User Gloster

    Dabei seit:
    10.01.07
    Beiträge:
    63
    Perfekt! Funktioniert, ich hab die Methode 2 gewählt bei der ersten Methode hat der iCal mir die "App" nicht ausgewählt! Bei der 2. Methode funktioniert es wunderbar ....

    Vielen Dank!

     
  10. iFumer

    iFumer Erdapfel

    Dabei seit:
    11.06.13
    Beiträge:
    2
    Wow sedna,

    das ist klasse. Ich denke gerade über eine Teilnehmerverwaltung mit Bordmitteln nach und Dein Skript führt mich fast bis zum Ziel.

    Die Idee mit der Ordneraktion ist klasse. Nur eine Frage habe ich. Ich stelle mir folgendes vor.
    -> Das Skript startet, wenn eine neue Adresse eingeben wurde
    -> man hat die Möglichkeit, das Kriterium nach dem gesucht werden soll festzulegen
    ---> (z.B. Notiz enthält "wks0613k" für Teilnehmer im Juni 2013 in Köln)
    -> es wird überprüft, ob die Gruppe existiert. Wenn "nein" wird sie geschaffen
    -> Adresse wird der Gruppe hinzugefügt
    fertig

    Wie kann ich also Deine Gruppe "test" ersetzen mit "variable aus Suchbegriff"

    Ich hoffe so, dass es da eine Lösung gibt und danke für die Mühe im Voraus.

    Dufte Grüße vom iFumer Uwe

    EDIT
    Hat sich erledigt DANKE
     
    #10 iFumer, 11.06.13
    Zuletzt bearbeitet: 11.06.13

Diese Seite empfehlen