Bestimmte Adresse aus Adressbuch aufrufen

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Ich versuche bisher mit mäßigem Erfolg mein Adressbuch mit Hilfe von Apple Scripts zu steuern.

Zum einen möchte ich aus FileMaker eine ganz bestimmte Adresskarte aufrufen. Filemaker soll dazu einen Suchbegriff übertragen und im Adressbuch soll daraufhin die entsprechende Adresskarte angezeigt werden.

Anschließend möchte ich bestimmte Daten wie z.B. Telefonnummer oder e-mailadresse von FileMaker zu der ausgewählten Adresskarte übertragen. Sozusagen eine Synchronisation der Daten aber eben nur für eine einzige Adresse.

Wer kann mir zum notwendigen Script hier Hilfe geben. Die FileMakerseite habe ich dabei im Griff ich bin bisher nur an der Umsetzung auf der Adressbuchseite gescheitert.

ich hoffe es findet sich jemand der mir hier helfen und einen Vorschlag machen kann.

Gruß
Jürgen
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.611
Hallo,

wie sieht Dein bisheriges Skript aus?

Verwendest Du FM-Skript und führst in ihm dann das AS aus?
Verwendest Du FM-Skript und rufst dann ein AS auf?
Verwendest Du AS zum auslesen der Daten in FM und diese sollen dann an das Adressbuch weitergegeben werden?

Wenn Du uns das bestehende mitteilst, dann ist einfacher Dir einen Ansatz zu bieten.

Viele Grüße
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Vielen Dank für Deine Antwort. Ich möchte das FM Skript verwenden um die Daten aus FM auszulesen und in das Adressbuch zu schreiben. Skripts aus FM sind mehr einigermaßen geläufig. Ich bin im Moment nur an der Syytax für das Adressbuch gescheitert. Wenn ich da einen entsprechenden Ansatz habe dann komme ich schnell weiter.

Es würde mich sehr freuen von dir dazu eine Hilfestellung zu bekommen.

Gruß
Jürgen
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Sorry, ich hab Deine Frage wohl nicht klar beantwortet. Ich möchte das ganze Procedere im FM Script abarbeiten, entsprechend Deiner ersten Alternative.

Gruß
Jürgen
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.611
Hallo,

gut, hier ein Beispiel:

Code:
--Daten aus dem aktuellen DS lesen
tell application "FileMaker Pro"
	tell current record
		set derName to cell "Name"
		set dieTeleNr to cell "Telefon"
	end tell
end tell

-- Adressbuch abglecihen
tell application "Address Book"
	
	-- Person via Namen suchen
	set gefundenePersonen to every person whose name contains derName
	
	-- zu Hause TeleNr. holen und aktualisieren
	set homeNr to every phone of (item 1 of gefundenePersonen) whose label is "home"
	set (value of (item 1 of homeNr)) to dieTeleNr as string
	
	-- speichern
	save addressbook
end tell
Da Du das Skript einbindest solltest Du den ersten Tell-Block durch "tell me" ersetzen. Da funtkioniert dann aber nur im FM.

Viele Grüße
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Herzlichen Dank für Dein Beispielscript. Ich bekomme allerdings beim testen einen Fehler in der letzten "set-Zeile". Die Fehlermeldung lautet

"AppleScript-Fehler „item 1 of {}“ kann nicht gelesen werden."

Was ist falsch ?

Gruß
Jürgen
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.611
Hallo,

{} ist eine Liste, die keinen Wert enthält. Du (wir) versuchst aber das erste Element anzusprechen. Dieses ist aber nicht vorhanden. Daraus lässt sich schließen, dass Dein Kontakt keine "home" Telefonnummer enthält.

Du kannst vorher überprüfen, ob dieses existiert und gegebenenfalls anlegen.

Viele Grüße
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Bin jetzt schon mal einen Schritt weitergegangen und habe den Aufruf gemacht, dass ich die in FM angezeigte Adresse im Adressbuch aufrufen kann.

Hier das Script:

--Daten aus dem aktuellen DS lesen
tell application "FileMaker Pro"
tell current record
set derName to cell "Nachname"
end tell
end tell

-- Name im Adressbuch suchen
tell application "Address Book"
activate
set selection to every person whose name contains derName
end tell

man müsste jetzt natürlich noch eine Funktion einbauen was angezeigt werden soll, wenn im Adressbuch kein entsprechender Datensatz gefunden wurde. Auch, dass sowohl mit Vorname und Nachname gesucht wird (Huber und Maier kommen ja meistens mehrfach in einer größeren Adressliste vor) wäre natürlich für das gezielte Suchen von Vorteil.

Nach dem die richtige (gleiche wie in FM) Adressbuchkarte angezeigt wird, möchte ich dann aus FM heraus einzelne Daten wie Telefonnummer, e-mail-Adresse etc. entweder von FM zum Adressbuch oder vom Adressbuch nach FM übertragen können. Quasi als "manuelle" Synchronisation beider Dateien. Eine automatische Synchronisation erscheint mir nicht möglich, da ich kein Kriterium habe welche Adressdaten auf FM oder im Adressbuch die aktuelle ist. In der FM-Datei können von jedem User die Daten geändert werden. Es ist quasi die "Mutter-Datei", ich möchte allerdings auf meinem MacBook und vor allem mit meinem iPhone natürlich unterwegs auch Daten ändern und dann halt bedarfsweise manuell mit der FM-Datei abgleichen. Soweit vielleicht zum Hintergrund meiner Überlegungen.

Oder hat jemand noch eine andere Idee um ein Adressmanagement zwischen einer FileMaker Datenbank auf einem Server für alle User im Firmennetzwerk und einzelnen Mac Anwendungen (Adressbook auf MacBooks und iPhones) zu realisieren ? Wobei die FM Datei nicht nur Adressdatei ist, sondern eigentlich zentrales Steuerungsinstrument für viele Office-Anwendungen von der Korrespondenz, über die Dokumentenarchivierung bis zur Faktura, Materialverwaltung und und und. Die FM-Anwendung ist also schon relativ komplex.

Ich bin aber schon zufrieden wenn ich meine "kleine" Lösung mit einem manuellen Abgleich zwischen der zentralen FM-Datei und meinem Adressbuch realisieren kann.

Gruß
Jürgen
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.611
Hallo,

ich würde "salopp" sagen, dass das gut umzusetzen ist. Aber (nicht böse gemeint) ohne Vorkenntnisse und Know-How wirst Du einiges an Zeit benötigen. Bei uns in der Firma habe ich ebenfalls etwas ähnliches umgesetzt. Leider kann ich Dir aber keine Quelltexte zur Verfügung stellen.

Wenn ich das richtig lese, dann hat es schon eine essentielle Bedeutung für Dich?
Vielleicht gibt es bereits bestehende Applikationen, die so einen Funktionsumfang bieten. Anderenfalls kannst Du Dir vielleicht auch etwas eigenes schreiben lassen.

Viele Grüße
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Du hast natürlich recht, es gab im Adressbuch für die getestete Karte keinen Eintrag für die private Telefonnummer.

Sofweit funktioniert das Script.

Bin schon am bearbeiten der nächsten Schritte, vor allem auch der Weg (übertragen) aus dem Adressbook in die FM-Datei.
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Hallo little picel,

dank Deiner Hilfe bin ich jetzt schon sehr weit und das Aufrufen der Adresskarten sowie das Eintragen von Daten funktioniert jetzt schon perfekt.

Sobald ich fertig bin werde ich das Script nochmals hierein stellen.

Doch nun noch eine Frage an der ich Hänge. Nachdem ich die Adressbuchkarte mit folgendem Script aufgerufen habe und sie angezeigt wird

-- Suchbegriff aus FileMaker auslesen
tell application "FileMaker Pro"
tell current record
set derName to cell "Nachname"
set derVorname to cell "Vorname"
set Telg to cell "Telg"
end tell
end tell

-- Adresskarte im Adressbuch suchen
tell application "Address Book"
activate
set selection to every person whose (first name contains derVorname) and (last name contains derName)
end tell

möchte ich auf die angezeigte Adresskarte von einem Skript aus zugreifen. Gibt es einen Befehl damit ich auf die angezeigte Adresskarte zugreifen kann, vergleichbar dem "tell current record" for FileMaker ? Denn, wenn die richtige Adresskarte angezeigt ist möchte ich zum Daten ein- und auslesen ja nur noch auf diese eine Adresskarte zugreifen.

Danke
Jürgen
 

jhsenator

Mitglied
Thread Starter
Mitglied seit
18.02.2008
Beiträge
647
Hallo little pixel,

dank Deiner Hilfe bin ich jetzt schon sehr weit und das Aufrufen der Adresskarten sowie das Eintragen von Daten funktioniert jetzt schon perfekt.

Nun brauche ich nochmals Deine Hilfe.

Nachdem ich die Adressbuchkarte mit folgendem Script aufgerufen habe und sie angezeigt wird

-- Suchbegriff aus FileMaker auslesen
tell application "FileMaker Pro"
tell current record
set derName to cell "Nachname"
set derVorname to cell "Vorname"
set Telg to cell "Telg"
end tell
end tell

-- Adresskarte im Adressbuch suchen
tell application "Address Book"
activate
set selection to every person whose (first name contains derVorname) and (last name contains derName)
end tell

möchte ich auf die angezeigte Adresskarte von einem Skript aus weiter zugreifen. Gibt es einen Befehl damit ich auf die angezeigte Adresskarte zugreifen kann, vergleichbar dem "tell current record" for FileMaker ? Denn, wenn die richtige Adresskarte angezeigt ist möchte ich zum Daten ein- und auslesen ja nur noch auf diese eine Adresskarte zugreifen.

Wie kann ich z.B. ganz konret die derste Telefonnummer Arbeit auslesen ?

Danke
Jürgen
 
Oben