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

Adressbuch und Intelligente Gruppen

Dieses Thema im Forum "AppleScript" wurde erstellt von fuzz, 15.08.06.

  1. fuzz

    fuzz Tokyo Rose

    Dabei seit:
    13.06.06
    Beiträge:
    69
    Scheinbar kann man nur richtige Gruppen synchronisieren :(
    Daher dachte ich mir AppleScript könnte aushelfen.

    Kann man irgendwie, wenn ja wie,... Das Ergebnis bestimmter Intelligenter Gruppen in eine normale Gruppe packen und dann iSync zum synchronisieren veranlassen? Danach dann die normale Gruppe wieder entfernen.

    Thx4help
     
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    das geht bestimmt...
    ich glaube das ganz fest dran
     
  3. fuzz

    fuzz Tokyo Rose

    Dabei seit:
    13.06.06
    Beiträge:
    69
    hehe... schön... aber wie? :)
     
  4. stk

    stk Grünapfel

    Dabei seit:
    05.01.04
    Beiträge:
    7.141
    Moin,

    einfach nur per drag'n drop die Einträge aus der intelligenten Gruppe in eine manuell erzeugte Gruppe nehmen?

    Wenn Du's automatisieren willst, sollte das mit AppleScript gehen. Was Du brauchst ist eine Schleife die alle Einträge der Gruppe "intelligent" durchgeht und zur Gruppe "manuell" hinzufügt. Sollte nicht so schwer sein.

    Gruß Stefan
     
  5. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Moin,

    hier mal ein Anfang zur Lösung deines Problems - sry mit dem iSync habe ich keine Erfahrung - vielleicht kann da jemand anderes aushelfen?

    Das Script läßt dich aus deinen intelligenten Gruppen eine auswählen, und erzeugt dann das temporäre Duplikat, das du haben willst:

    Code:
    tell application "Address Book"
    	
    	set iGroups to (groups whose id contains "ABSmartGroup")
    	set iGroupNames to {}
    	repeat with iGroup in iGroups
    		set iGroupNames to (iGroupNames & name of iGroup)
    	end repeat
    	set chosenGroupName to (choose from list iGroupNames) as string
    	repeat with iGroup in iGroups
    		if (name of iGroup) is chosenGroupName then
    			set chosenGroup to iGroup
    			exit repeat
    		end if
    	end repeat
    	set tmpGroup to (make new group at the end of groups with properties {name:"tmp_" & chosenGroupName})
    	
    	try
    		add people of chosenGroup to tmpGroup
    		-- sync here
    		delete tmpGroup
    	on error
    		display dialog "Error"
    		delete tmpGroup
    	end try
    	
    end tell

    Grüße,

    Daisy
     
  6. stk

    stk Grünapfel

    Dabei seit:
    05.01.04
    Beiträge:
    7.141
    Moin,

    wenn die Kontakte mal in einer manuellen Gruppe drin sind, kann iSync die abarbeiten - no probs.

    Gruß Stefan.
     
  7. fuzz

    fuzz Tokyo Rose

    Dabei seit:
    13.06.06
    Beiträge:
    69
    hey das schaut super aus, vielen dank!

    ich bin leider noch nicht so der apple scripter... kannst du mir kurz noch erklären was da genau geschieht bzw. manche stellen verwirren etwas wie die zeile: set iGroups to {}
     
  8. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Kein Problem - hier noch mal eine kommentierte Fassung des obigen Scripts:

    tell application "Address Book"

    -- erstelle eine List aller intelligenten Gruppen:
    set iGroups to (groups whose id contains "ABSmartGroup")

    -- in den folgenden 4 Scriptzeilen wird eine List* der Namen dieser Gurppen angelegt:
    -- es beginnt mit einer leeren List:
    set iGroupNames to {}

    -- Dazu verwenden wir eine Schleife - sie führt die folgenden Zeilen für alle
    -- Items* in der List 'iGroups' aus (also für alle intelligenten Gruppen):
    repeat with iGroup in iGroups
    -- hänge den Namen der Gruppe (= die Schleifenvariable 'iGroup')
    -- an die Liste 'iGroupnames' an:
    set iGroupNames to (iGroupNames & name of iGroup)
    -- Schleifenende:
    end repeat

    -- Dialog, bei dem ein Gruppenname aus der oben erzeugten Namens-List
    -- ausgewählt werden kann:
    set chosenGroupName to (choose from list iGroupNames) as string

    -- Jetzt suchen wir zum ausgewählten Namen wieder die Gruppe aus
    -- (ja, das ist leider so kompliziert (ich wüsste aber zumindest nicht,
    -- wie's mit AppleScript einfacher geht) - dazu verwenden wir wieder
    -- eine repeat-Schleife (s.o.):
    repeat with iGroup in iGroups

    -- wenn der Name stimmt, ...
    if (name of iGroup) is chosenGroupName then

    -- ... dann wird die Ergebnis-Variable 'chosenGroup' gesetzt und ...
    set chosenGroup to iGroup
    -- ... die weitere Ausführung der Schleife abgebrochen.
    exit repeat
    end if
    end repeat


    -- erzeuge eine neue Gruppe (die nicht-intelligente Temporär-Gruppe)
    -- und nenne sie so, wie die intelligente Gruppe heisst, aber mit "tmp_" davor:
    set tmpGroup to (make new group at the end of groups with properties {name:"tmp_" & chosenGroupName})

    -- damit wir im Fehlerfall keine Probleme bekommen
    -- (Fehlermöglichkeiten gibt's immer ... z.B. Platte voll etc.)
    -- verwenden wir eine 'try' ... 'on error'-Konstruktion:
    try
    -- kopiere alle Einträge in die temporäre Gruppe:
    add people of chosenGroup to tmpGroup


    -- hier kannst du jetzt irgendwas mit der
    -- temporären Gruppe machen ...


    -- und wenn du sie nicht mehr brauchst, dann kannst du sie so
    -- wieder löschen (die Originaleinträge bleiben selbstverständlich erhalten)
    delete tmpGroup

    -- im Fehlerfall ...
    on error
    -- gib eine Fehlermeldung aus und ...
    display dialog "Error"
    -- ... lösche die temporäre Gruppe wieder.
    delete tmpGroup
    end try

    end tell


    -- *) List = AppleScript-Bezeichnung für Feld/Array,
    -- Item = AppleScript-Bezeichnung für ein Feldelement


    Grüße,

    D.
     
    Cyrics gefällt das.

Diese Seite empfehlen