Beitrag von Detlef Schulz, 26.05.2008, 08:53
Neu in AppleScript 2.0: Die Programm-ID
Bisher wurde in AppleScript ein Programm immer über den Namen angesprochen. Zum Beispiel:
tell application “Skripteditor” to make new document
Ein Programmname ist jedoch nicht eindeutig. Es kann also durchaus unterschiedliche Programme gleichen Namens geben oder dasselbe Programm kann in verschiedenen Sprachen unterschiedliche Namen tragen. Außerdem kann man Programme im Finder auch umbenennen, also ganz willkürliche Namen vergeben.
Aus diesem Grund wurde in AppleScript 2.0 Programmen eine neue Eigenschaft zugewiesen, die “id”. Damit ist es nun endlich möglich, ein Programm eindeutig zu bestimmen.
Bei der id eines Programms handelt es sich um den sogenannten Bundle-Identifier, oder falls dieser fehlt, die Bundlesignatur. Beide stehen üblicherweise in der Datei info.plist, welche auf oberster Ebene im Programmbundle liegt. (Wenn Sie diese Datei öffnen, dann sollten Sie darin nichts ändern oder Sie laufen Gefahr, dass das Programm danach nicht mehr läuft!)
So hat beispielsweise der Finder den Identifier “com.apple.finder” und die Signatur “MACS”.
Um die id herauszufinden, ist es jedoch nicht nötig, das Bundle zu öffnen. Sie können das Programm auch mit AppleScript nach seiner id fragen:
tell application "Adressbuch" to get id
Im Ergebnisbereich des Skripteditors erhalten Sie dann die id “com.apple.AddressBook”.
Falls diese bei einem Programm nicht vorhanden sein sollte, würde die Signatur des Programms ausgegeben, die genauso wie der Identifier verwendet werden kann.
Diese id können Sie nun ganz normal in einem tell-Block verwenden. Es folgt ein kleines Beispielskript, in dem eine neue Person in der Gruppe “Privat” des Adressbuchs angelegt wird.
tell application id "com.apple.AddressBook"
set personData to {first name:"Hans", last name:"Tester"}
set x to make new person with properties personData
add x to group "Privat"
end tell
Nun können Sie das Skript weitergeben, ohne sich Sorgen machen zu müssen, ob das Programm auf anderen Rechnern genauso heißt oder ob es eventuell sogar umbenannt wurde.
Mit der id gehen Sie kein Risiko mehr ein, dass der Anwender lästige Nachfragen nach einem vorhandenen Programm erhält.
Ein weiterer Vorteil der id ist, dass sich ein tell an die “application id” auch in einem try-Block abfangen lässt.
Bei einem “tell” an den Namen des Programms war das bisher nicht möglich. Hier wurde der Anwender immer gefragt “Wo ist Anwendung xyz?”, wenn das Programm nicht vorhanden war. Nun können Sie den Fehler abfangen und dem Anwender einen eigenen Dialog präsentieren:
try
tell application id "com.barebones.textwrangler" to activate
on error
display dialog "Sie brauchen das Programm \"TextWrangler\"!"
end try
Falls das Programm mit dem Namen TextWrangler nicht installiert ist, erhält der Anwender dann einen Hinweis.
Anstatt einen Dialog zu verwenden, könnten Sie aber natürlich auch gleich Code für ein Alternativprogramm schreiben, zum Beispiel TextEdit. Das Skript würde dann normalerweise den Code im try-Block für TextWrangler ausführen, und nur wenn TextWrangler nicht vorhanden ist, den alternativen Code im error-Block für TextEdit.
Themen: E-Mail Abo | Apple
|
AppleScript
|
Mac OS
Tags: AppleScript | Leopard | Mac OS X
apple
RSS 2.0