Script Editor in OSX

JavaScript for Automation II

Yosemite bringt eine interessante Neuerung mit sich: Die Möglichkeit – neben AppleScript – nun auch JavaScript für die Automatisierung von Arbeitsabläufen verwenden zu können.

Standardmäßig ist in Yosemite der Skript-Editor Bestandteil des Betriebssystems. Er befindet sich im Verzeichnis

-> Programme -> Dienstprogramme

und dient als Entwicklungstool für AppleScript und JavaScript. Der Artikel “JavaScript for Automation I” befasst sich mit der Nutzung und Einrichtung des Skript-Editors.

Anhand von zwei Beispielen möchte ich zeigen, wie auf den Finder zugegriffen werden kann. Der entsprechende AppleScript-Code ist als Kommentar vorangestellt.

Noch zwei Hinweise vorweg:

  1. Es ist grundsätzlich nicht erforderlich eine Zeile mit einem Semikolon abzuschließen.
  2. Anstelle der hier verwendeten doppelten Anführungszeichen, können auch einfache Anführungszeichen (’) verwendet werden.

Finder-Fenster schließen

// AppleScript-Code:
// tell application "Finder" to close every window

// JavaScript-Code:
Finder = Application("Finder");
window = Finder.windows;
Finder.close(window);

Home-Verzeichnis öffnen

// tell application "Finder" to open home

Finder = Application("Finder");
h = Finder.home;
Finder.open(h);

Die Syntax im Detail

Die Beispiele vermitteln einen Eindruck, wie JavaScript im Zusammenspiel mit Anwendungen genutzt werden kann (Apple bezeichnet dies als Application Scripting). Ausgangspunkt dafür ist ein Application Object (eine Anwendung). Auf eine Anwendung kann dabei auf verschiedene Weise zugegriffen werden. Der häufigste Fall wird der Zugriff über den Namen sein, z.B.:

Application("Finder");
Application("Mail");
Application("Safari");

In den beiden Finder-Beispielen erfolgt der Zugriff auf den Finder ebenfalls über den Namen:

Finder = Application("Finder");

Es gibt aber noch weitere Zugriffsmöglichkeiten:

Application("com.apple.mail"); // Bundle ID
Application("Applications/Safari.app"); // Pfad
Application(344) // Prozess ID
Application.currentApplication // Current Application

Sobald man Zugriff auf eine Anwendung hat, lassen sich Eigenschaften, Elemente, Kommandos und Klassen nutzen. Im ersten Beispiel, das zeigt, wie die Finder-Fenster geschlossen werden können, ist ein Zugriff auf die Windows-Elemente erforderlich. Die Syntax für einen Zugriff auf Elemente lautet:

Anwendung.Element[0];

Elemente sind Bestandteil eines Arrays. Sie können demnach über den – in eckigen Klammern geschriebenen – Index angesprochen werden. Das erste Fenster hat den Index 0.

window = Finder.windows[0];

Um alle geöffneten Fenster anzusprechen, wird die Index-Angabe weggelassen.

window = Finder.windows;

Schließlich bedarf es eines Kommandos, das die Fenster schließt. Zunächst die Syntax dazu:

Anwendung.Kommando(...);

Bezogen auf das obige Beispiel ist also folgender Code zu schreiben:

Finder.close(window);

Das Kommando lautet hier close, das mit dem Parameter windows aufgerufen wird.

Jedes geöffnete Finder-Fenster stellt einen Wert dar, der Bestandteil eines Arrays ist; jedes Fenster ist also ein Element eines Arrays. (Werte eines Arrays werden als Elemente bezeichnet.) Jedes Array hat eine length-Eigenschaft. Daher lässt sich beispielsweise mit

windows.length;

ermitteln, wie viele Finder-Fenster geöffnet sind.

Das zweite Beispiel ist ähnlich. In der zweiten Zeile wird aber kein Element, sondern eine Eigenschaft angesprochen:

Anwendung.Eigenschaft;

Bezogen auf das Beispiel lautet die Zeile folglich:

h = Finder.home;

Die Eigenschaft home steht dabei für das Home-Verzeichnis des angemeldeten Benutzers, also in meinem Fall für das Verzeichnis

/Users/bodo

Wird diese Finder-Eigenschaft als Argument an das Kommando open übergeben, öffnet der Finder das Home-Verzeichnis:

Finder.open(h);

Fazit

Zwar handelt es sich bei diesem Artikel nur um einen ganz kleinen Einstieg mit zwei einfachen Beispielen, dennoch zeigt sich, dass Application Scripting mit JavaScript einfach zu erlernen ist und zahlreiche Möglichkeiten für die Automatisierung von Arbeitsabläufen bietet. Diejenigen, die mehr Informationen zu den neuen Automatisierungsmöglichkeiten mit JavaScript wünschen, sei Apples JavaScript for Automation Release Notes ans Herz gelegt.

Durch Benutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Mehr Informationen

Die Verwendung von Cookies dient dazu, Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf diese Website zu analysieren. Außerdem werden Informationen zur Nutzung dieser Webseite an Partner für soziale Medien, Werbung und Analysen weitergegeben.

Schließen