Adressbuch: Mehrere Kontakte gleichzeitig bearbeiten?

M

macmacken

Kennt jemand von Euch eine Möglichkeit, im Adressbuch von Mac OS X «Leopard» mehrere Kontakte (Visitenkarten) gleichzeitig zu bearbeiten?

Hintergrund: Zahlreiche Visitenkarten in meinem Adressbuch stammen von Personen aus dem gleichen Unternehmen. Nun hat dieses Unternehmen seinen Sitz an einen anderen Ort verschoben und ich würde entsprechend gerne bei allen betroffenen Personen die Adresse gleichzeitig ändern.

Martin
 
Geht nicht geht ungefähr so:

tell application "Address Book"
repeat with p in (people whose organization is "Firma")
display dialog "Name: " & (name of p)
repeat with a in (addresses of p whose label is "work")
set city of a to "New City"
end repeat
end repeat
save addressbook
end tell
 
Ich hab's mir ein wenig mehr Mühe gemacht, was aber sicher dem Umstand geschuldet ist, dass ich noch AppleScript Anfänger bin. Mich würde insbesondere interessieren (das an die Script Profis), ob man in Apple Script auch komplexere Dialoge verwenden kann.

Beschreibung:
Das Script erfragt zunächst die Firma und die neue Adresse. Anschließend wird die Adresse bei allen Kontakten, die zur Firma gehören geändert, bzw. falls bei einem Mitarbeiter die Adresse noch nicht existierte, diese neu angelegt. Zum Schluss wird angezeigt, wie viele Adressen neu angelegt und wie viele geändert wurden.

Code:
-- Variablendefinition

set userCanceled to false
set geAendert to 0
set neuAngelegt to 0

-- Eingabe der Firma und der neuen Adresse in einzelnen Dialogen.
try
	set Firma to display dialog "Mitarbeiter welcher Firma?" buttons {"Abbrechen", "OK"} default button "OK" cancel button "Abbrechen" default answer "Firma??"
on error number -128
	set userCanceled to true
end try

if not userCanceled then
	try
		set strasse to display dialog "Neue Straße?" buttons {"Abbrechen", "OK"} default button "OK" cancel button "Abbrechen" default answer "Straße Nr.??"
	on error number -128
		set userCanceled to true
	end try
end if

if not userCanceled then
	try
		set Plz to display dialog "Neue PLZ?" buttons {"Abbrechen", "OK"} default button "OK" cancel button "Abbrechen" default answer "PLZ??"
	on error number -128
		set userCanceled to true
	end try
end if

if not userCanceled then
	try
		set Ort to display dialog "Neuer Ort?" buttons {"Abbrechen", "OK"} default button "OK" cancel button "Abbrechen" default answer "Ort??"
	on error number -128
		set userCanceled to true
	end try
end if

if not userCanceled then
	try
		set Land to display dialog "Neues Land?" buttons {"Abbrechen", "OK"} default button "OK" cancel button "Abbrechen" default answer "Deutschland"
	on error number -128
		set userCanceled to true
	end try
end if

-- Wurde nicht abgebrochen, werden hier die Eingaben der Dialoge an Variablen zur Änderung übergeben
if not userCanceled then
	set chgFirma to text returned of Firma
	set neuStrasse to text returned of strasse
	set neuPlz to text returned of Plz
	set neuOrt to text returned of Ort
	set neuLand to text returned of Land
end if

-- Falls Abbruch, erfolgt eine Meldung, ansonsten wird hier die Änderung der Kontakte vorgenommen
if userCanceled then
	display dialog "Die Aktion wurde abgebrochen! Es wurden keine Adressbucheinträge geändert!"
else
	tell application "Address Book"
		set FirmListe to every person whose organization = chgFirma
		repeat with oneP in FirmListe
			if label of addresses of oneP contains "work" then
				set (street of addresses of oneP whose label is "work") to neuStrasse
				set (zip of addresses of oneP whose label is "work") to neuPlz
				set (city of addresses of oneP whose label is "work") to neuOrt
				set (country of addresses of oneP whose label is "work") to neuLand
				set geAendert to geAendert + 1
			else
				make new address at end of addresses of oneP with properties {label:"Work", street:neuStrasse, city:neuOrt, zip:neuPlz, country:neuLand}
				set neuAngelegt to neuAngelegt + 1
			end if
			
		end repeat
        save addressbook
	end tell
	-- Die Zahl der Änderungen und Neuanlagen wird als Meldung ausgegeben!
	display dialog "Es wurden " & geAendert & " Einträge geändert und " & neuAngelegt & " Einträge neu angelegt!"
end if

Ich hoffe, die Lösung gefällt. Gruß ichamel
 
Zuletzt bearbeitet:
Bei mir war es noch notwendig "save addressbook" mit ins Script
aufzunehmen.

In welchem Zusammenhang ist das nötig? Bei mir lief das Skript quasi "life". Hat das was mit verschiedenen Versionen zu tun? Was passiert bei Dir, wenn Du das "save" Statement weglässt?
 
Bei mir waren dann die Änderungen nicht sichtbar.

Ich habe das gerade nochmal bei mir getestet und bin zu folgender Erkenntnis gekommen:

Geändert wird die Adresse in jedem Fall, auch wenn man das "save addressbook" weglässt. Man sieht die Änderung dann nur nicht sofort. Wenn man aber z.B. zu einem anderen Kontakt und dann wieder zurück wechselt, werden die Änderungen angezeigt.

Mein Fazit: Auf jeden Fall ist es sauberer, mit "save addressbook" zu arbeiten, weil dann in jedem Fall die Änderungen sofort sichtbar sind, notwendig ist es aber nicht (Ich nehm's aber trotzdem oben ins Skript auf;))
 
Hallo,
ich kram mal diesen Post aus, weil der Titel genau meine Frage beschreibt,
aber die angeboten Lösungen mir nicht geholfen haben.

Meine Frage konkret.
Ich möchte mehreren Kontakten (knapp 300), die ich schon zu einer Gruppe zusammengeführt habe,
im Feld "Notiz" allen das gleiche hinzufügen. Die bestehenden Einträge in "Notizen" dürfen nicht gelöscht werden.

Welchen Weg gibt es dazu?
Adressbuch Version: 5.0.3 (883)
Mac OS 10.6.8
 
...gibt es hier eigentlich eine Lösung bzgl. "mehrere Kontakte gleichzeitig ändern"? Also eine Lösung ohne Skripte?
 
...hatte ich auch schon gelesen. Mir wäre eine einfache Lösung aber lieber
 
Ja, OK... ich probiere das mal am WE, hab´nur Angst mir die Kontakte zu zerschießen
 
Ja, OK... ich probiere das mal am WE, hab´nur Angst mir die Kontakte zu zerschießen
Ja, ne, dann lieber nicht;) Selbst mit einem selbstverständlich vorher erstelltem Backup kann es ja passieren, dass im Anschluss Einträge doppelt sind. Aber wer weiß, vielleicht bist du ja zu neugierig:D
 
Zurück
Oben Unten