In diesem AppleScript-Lernprogramm erfahren Sie, wie Sie Gruppen von Apps einrichten, die alle gleichzeitig gestartet werden können. Auf dem Weg lernen wir, Listen, Handler, if-Anweisungen zu implementieren und mit den Ergebnissen der Aktionen eines Benutzers zu arbeiten.
Die Grundidee hier ist, dass Sie wahrscheinlich verschiedene Gruppen von Apps haben, die Sie für verschiedene Aufgaben, z. B. für Webdesign oder Schreiben, offen haben möchten. Wäre es nicht schön, wenn Sie all diese Apps auf einmal öffnen könnten, während Sie an verschiedenen Stellen Ihres Tages arbeiten?
Mit AppleScript können wir dies ziemlich leicht erreichen. Der Algorithmus ist hier nur vier Schritte lang:
Aus der Sicht eines Benutzers wird eine Liste mit verschiedenen Anwendungsgruppen auf dem Bildschirm angezeigt (Arbeit, Spielen usw.). Sie wählen die Gruppe, die Sie starten möchten, klicken Sie auf "OK" und sie werden alle für Sie gestartet. Ziemlich cool
Als Erstes müssen wir unsere verschiedenen App-Gruppen einrichten. Wir verwenden drei verschiedene Gruppen für dieses Lernprogramm: Arbeit, Spielen und Produktivität, die jeweils eine eigene Liste von Apps enthält.
In Applescript ähnelt eine Liste sehr stark einer Variablen. Sie enthält nur mehrere verschiedene Elemente anstelle von nur einem. Eine Liste mit den Vokalen des englischen Alphabets würde folgendermaßen aussehen:
[apfelschrift]
Setze die VokaleList auf "a", "e", "i", "o", "u", "y"
[/ applescript]
Von hier aus können wir einzelne Listenelemente auswählen und bearbeiten. Zum Beispiel gibt das Folgende "e" zurück.
[apfelschrift]
--Gibt "e" zurück
Setze die VokaleList auf "a", "e", "i", "o", "u", "y"
Gibt den Punkt 2 der VokaleListe zurück
[/ applescript]
Beachten Sie, dass viele Programmiersprachen "null indiziert" sind, sodass das erste Element in einem Array oder einer Liste tatsächlich Element Null ist. Dies ist bei AppleScript nicht der Fall. Das erste Element in einer Liste ist Element eins.
Für den ersten Schritt werden wir insgesamt vier verschiedene Listen erstellen. Die ersten drei enthalten die genauen App-Namen, wie sie in OS X angezeigt werden, und die letzte enthält die drei Kategorien, in die wir unsere App-Gruppen unterteilt haben: Arbeit, Spielen und Produktivität.
[apfelschrift]
--Gruppen festlegen
setze workGroup auf "Mail", "Safari", "TextEdit"
playGroup auf "Safari", "App Store", "iTunes" setzen
Produktivitätsgruppe auf "Notes", "Erinnerungen", "Mail" setzen
Setze appGroups auf "Work", "Play", "Productivity"
[/ applescript]
In der ersten Codezeile wird hier eine Variable eingerichtet, die eine Liste mit Anwendungsnamen enthält: Mail, Safari und TextEdit. Ich wiederhole diesen Vorgang noch zweimal für die anderen Gruppen.
In der letzten Codezeile wird derselbe Vorgang wiederholt. Diesmal füllt die Liste jedoch drei im Wesentlichen willkürliche Gruppennamen, die ich erstellt habe: Work, Play und Productivity.
Beim Codieren geht es darum, große Mengen an Informationen in leicht handhabbare Konstrukte aufzunehmen.
Der Vorteil dieses Schrittes ist, dass wir a vollgestopft haben Tonne von Informationen in vier leicht abrufbare Variablen. Beim Codieren geht es darum, große Mengen an Informationen in leicht handhabbare Konstrukte aufzunehmen. Wir werden dies im nächsten Schritt in noch größerem Maßstab sehen.
Spitze: Ich habe alle Standard-Apps für meine Gruppen verwendet, aber wenn Sie nicht bei Mountain Lion arbeiten, werden Sie keine Notizen und Erinnerungen haben. Ändern Sie die Apps in der Liste in die Apps, die Sie tatsächlich installiert haben.
Nachdem ich meine Variablen eingerichtet habe, gehe ich gerne zu allen Handlern über, die erstellt werden müssen.
Im vorherigen Schritt haben wir mehrere Elemente in eine Liste aufgenommen, die an eine einzige Variable gebunden ist. Mit einem Handler tun Sie etwas Ähnliches, nehmen eine ganze Liste von Befehlen, Aktionen usw. und binden diese in eine Variable ein.
Wie bei Funktionen in anderen Sprachen können Handler so eingerichtet werden, dass sie beim Aufruf eine Information akzeptieren. Diese Information wird dann "übergeben" und im gesamten Handler verwendet.
Wie können wir wissen, welche Aktionen von sich aus deklariert und welche in einen Handler verpackt werden sollen? Als Faustregel gilt: Wenn Sie einen größeren Code mehr als einmal wiederholen, ist es wahrscheinlich an der Zeit, einen Handler einzurichten.
Wenn Sie feststellen, dass Sie einen größeren Code mehr als einmal wiederholen, ist es wahrscheinlich an der Zeit, einen Handler einzurichten.
Später in unserem Skript müssen wir wiederholt alle Apps in einer bereitgestellten Liste starten. Dies ist der perfekte Ort, um einen Handler zu implementieren. Die Syntax zum Einrichten sieht folgendermaßen aus:
[apfelschrift]
auf AppLauncher (ausgewählte Gruppe)
appLauncher beenden
[/ applescript]
Wie Sie sehen, ist es ein bisschen wie ein Tellblock, nur dass es mit dem Wort "on" beginnt, um anzuzeigen, dass es sich um einen Handler handelt. "AppLauncher" ist hier einfach der Name, den ich für meinen Handler gewählt habe. Halten Sie diese wie bei Variablen immer einfach und beschreibend.
Der nächste Teil dieser Zeile wird in Klammern angezeigt: (ausgewählte Gruppe). Hier übergeben wir eine Variable, auf die im gesamten Handler zugegriffen werden kann. Wenn wir diesen Handler später verwenden, übergeben wir eine unserer drei App-Gruppenlisten.
Da wir nun eine Shell haben, die die Grenzen des Handlers definiert, können wir sie mit Befehlen füllen.
[apfelschrift]
--App Launcher Handler
auf AppLauncher (ausgewählte Gruppe)
Wiederholen Sie mit i von 1 bis (Anzahl der Elemente in der ausgewählten Gruppe).
Anwendung mitteilen (Punkt i der ausgewählten Gruppe)
aktivieren Sie
ende sagen
ende wiederholen
appLauncher beenden
[/ applescript]
Zuerst habe ich eine Wiederholung eingerichtet, die jedes Element in der Liste durchläuft, in der wir übergeben werden. Dann verwende ich jedes dieser Elemente als Variable, um als App-Namen in einem Tell-Block zu dienen. Schließlich startet ein einfacher "Aktivieren" -Befehl die Apps in der Liste.
Jetzt, da wir unsere Variablen deklariert und unseren Handler eingerichtet haben, ist es an der Zeit, mit dem Benutzer zu interagieren. Wir möchten ein Dialogfenster erstellen, das eine Liste von Optionen enthält.
Das klingt nach viel Arbeit, aber in Wirklichkeit ist es super einfach. Wir haben unsere AppGroups-Liste bereits eingerichtet. Jetzt benötigen wir nur noch eine kurze Codezeile, um AppleScript mitzuteilen, dass die Liste angezeigt werden soll.
[apfelschrift]
--Lassen Sie den Benutzer eine Gruppe auswählen
Stellen Sie die Auswahl so ein, dass sie aus der Liste AppGroups mit dem Titel "Welche App-Gruppe?"
[/ applescript]
Hier habe ich den Befehl "Auswahl aus Liste" verwendet, um einen standardmäßigen eingebauten Dialog aufzurufen, und "Titel", um Text oben im Dialog zuzuweisen.
Beachten Sie, dass wir AppleScript nicht nur angewiesen haben, dem Benutzer eine Liste zu geben. Wir stellen den gesamten Prozess mit dem Befehl "set" wie eine Variable auf.
Dies ist eine kurze und nette Methode, um einen Dialog zu erstellen und das Ergebnis in einem einzigen Schritt zu erhalten. Der Dialog wird geöffnet, der Benutzer wählt eine App-Gruppe aus und das Ergebnis wird "theSelection" als Variable zugewiesen.
Nun kommt der knifflige Teil. Der Benutzer hat den Dialog gesehen und mit ihm interagiert, und das Ergebnis muss verarbeitet werden. Dazu müssen wir buchstäblich jedes mögliche Szenario berücksichtigen und berücksichtigen. Gehen Sie niemals davon aus, dass Benutzer logisch oder kompetent sein werden. Nehmen Sie stattdessen an, dass sie jede mögliche Route nehmen, insbesondere diejenigen, die wahrscheinlich einen Fehler verursachen.
Gehen Sie niemals davon aus, dass Benutzer logisch oder kompetent sein werden.
Das erste Szenario, das ich berücksichtigen möchte, ist eine Stornierung. Das Fenster öffnet sich, der Benutzer ändert seine / ihre Meinung und drückt abbrechen… jetzt was?
In einem vorherigen Schritt warfen wir das Ergebnis des Fensters in die Auswahl. Wenn der Benutzer abbricht, wird der Wert dieser Variablen auf "false" gesetzt. Dieses Wissen erleichtert die Handhabung des Szenarios mit einer if-Anweisung:
[apfelschrift]
--Wenn der Benutzer abbricht
Wenn die Auswahl dann falsch ist
Fehlernummer -128
ende wenn
[/ applescript]
Also was ist das? Fehlernummer -128 Geschäft? AppleScript enthält eine ganze Liste möglicher Fehler, denen jeweils eine eindeutige Nummer zugewiesen wird. Es ist nur so, dass "Benutzer abgebrochen" -128 ist.
Alles, was wir hier tun, ist zu berichten, was passiert ist. Wenn Sie sich die Ergebnisse unseres Skripts im Skript-Editor ansehen, werden Sie feststellen, dass der Benutzer den Vorgang abgebrochen hat. Wenn diese Aktion ausgeführt wird, wird das Skript beendet und verschwindet aus der Ansicht des Benutzers. Dies ist genau das, was wir in diesem Fall wollen. Dies ist also so weit, wie wir hier vorgehen.
Jetzt kommt das große Ziel. Wenn der Benutzer den Vorgang nicht abbricht, muss er eine unserer drei Gruppen ausgewählt haben. Unsere Aufgabe ist es, was herauszufinden und entsprechend zu handeln.
Bevor wir in diese drei Szenarien einsteigen, müssen wir unsere Variable ein wenig verarbeiten. Wenn der Benutzer ein Element auswählt und auf "OK" klickt, weisen wir der Auswahl tatsächlich eine Liste zu (sie hat nur ein Element, aber es ist trotzdem eine Liste)..
Um dies zu beheben, überschreiben Sie einfach die Variable wie folgt.
[apfelschrift]
--Wenn der Benutzer abbricht
Wenn die Auswahl dann falsch ist
Fehlernummer -128
sonst
Setzen Sie die Auswahl auf Element 1 der Auswahl
ende wenn
[/ applescript]
Dies scheint ein wenig komisch zu sein, aber wenn Sie es nicht tun, wird das Skript einen Fehler auslösen, so dass Sie diesen Schritt nicht überspringen!
Nun, da wir diese Hausarbeit gemacht haben, können wir das Benutzerergebnis mit den verschiedenen Möglichkeiten vergleichen. Die erste Option ist, dass der Benutzer die App-Gruppe "Arbeit" ausgewählt hat.
In diesem Fall sollte die Variable "theSelection" mit dem ersten Element in unserer Liste "appGroups" übereinstimmen (sie enthalten beide den Wert "Work"). Lassen Sie uns eine weitere if-Anweisung aufstellen, um die Wahrheit der Gleichheit zu prüfen.
[apfelschrift]
--Wenn der Benutzer abbricht
Wenn die Auswahl dann falsch ist
Fehlernummer -128
sonst
Setzen Sie die Auswahl auf Element 1 der Auswahl
--Wenn die Auswahl Arbeitsgruppe ist
if theSelection = (Element 1 der appGroups) dann
appLauncher (Arbeitsgruppe)
ende wenn
ende wenn
[/ applescript]
Wie Sie sehen, wenn die Aussage sich als wahr herausstellt, führen wir unseren Handler von vorher aus, wobei "workGroup" als Liste übergeben wird, mit der wir arbeiten möchten.
Zu diesem Zeitpunkt zählt unser Handler die Anzahl der Elemente in der Arbeitsgruppe und wiederholt dann einen Tell-Block mit einem "Aktivieren" -Befehl für jedes dieser Elemente. Dadurch werden Mail, Safari und TextEdit erfolgreich gestartet und das Skript wird beendet.
Mit diesen Schritten können wir unser Skript beenden, indem wir zwei "else if" -Anweisungen hinzufügen, die die Auswahl mit den anderen beiden Elementen in appGroups vergleichen und unseren Handler mit der entsprechenden Liste als Eingabe starten.
In jedem Fall durchläuft der Handler die Apps der ausgewählten Gruppe.
[apfelschrift]
--Wenn der Benutzer abbricht
Wenn die Auswahl dann falsch ist
Fehlernummer -128
sonst
Setzen Sie die Auswahl auf Element 1 der Auswahl
--Wenn die Auswahl Arbeitsgruppe ist
if theSelection = (Element 1 der appGroups) dann
appLauncher (Arbeitsgruppe)
--Wenn die Auswahl playGroup ist
Sonst, wenn theSelection = (Element 2 der appGroups) dann
appLauncher (playGroup)
--Bei Auswahl der Produktivitätsgruppe
Sonst wenn theSelection = (Punkt 3 der appGroups) dann
AppLauncher (Produktivitätsgruppe)
sonst
Rückkehr
ende wenn
ende wenn
[/ applescript]
Tipp für Fortgeschrittene: Dies ist eine Menge von if-Anweisungen, um zusammen zu stopfen. Können Sie diesen Code mit einer Wiederholungsanweisung ähnlich wie am Anfang umschreiben??
Hoffentlich haben wir das so langsam durchgearbeitet, dass Sie jeden Teil des Skripts vollständig verstehen werden. Hier sehen Sie das vollständige Skript in einer Aufnahme:
[apfelschrift]
--Gruppen festlegen
setze workGroup auf "Mail", "Safari", "TextEdit"
playGroup auf "Safari", "App Store", "iTunes" setzen
Produktivitätsgruppe auf "Notes", "Erinnerungen", "Mail" setzen
Setze appGroups auf "Work", "Play", "Productivity"
--App Launcher Handler
auf AppLauncher (ausgewählte Gruppe)
Wiederholen Sie mit i von 1 bis (Anzahl der Elemente in der ausgewählten Gruppe).
Anwendung mitteilen (Punkt i der ausgewählten Gruppe)
aktivieren Sie
ende sagen
ende wiederholen
appLauncher beenden
--Lassen Sie den Benutzer eine Gruppe auswählen
Stellen Sie die Auswahl so ein, dass sie aus der Liste AppGroups mit dem Titel "Welche App-Gruppe?"
--Wenn der Benutzer abbricht
Wenn die Auswahl dann falsch ist
Fehlernummer -128
sonst
Setzen Sie die Auswahl auf Element 1 der Auswahl
--Wenn die Auswahl Arbeitsgruppe ist
if theSelection = (Element 1 der appGroups) dann
appLauncher (Arbeitsgruppe)
--Wenn die Auswahl playGroup ist
Sonst, wenn theSelection = (Element 2 der appGroups) dann
appLauncher (playGroup)
--Bei Auswahl der Produktivitätsgruppe
Sonst wenn theSelection = (Punkt 3 der appGroups) dann
AppLauncher (Produktivitätsgruppe)
sonst
Rückkehr
ende wenn
ende wenn
[/ applescript]
Nachdem Sie nun das vollständige Skript erstellt haben, speichern Sie es als Anwendung, geben Sie ihm ein schickes Symbol und legen Sie es in Ihr Dock.
Wenn Sie dieses Tutorial erfolgreich durchlaufen haben und alle Schritte verstehen, gratulieren Sie! Sie sind definitiv ein mehr als kompetenter AppleScripter und es ist an der Zeit, sich selbst zu verzweigen und ein paar tolle Skripte zu erstellen.
Hinterlassen Sie einen Kommentar und erzählen Sie mir von den Skripts, die Sie für Ihren Mac erstellt haben. Wenn Sie weitere Ideen für Skripte haben, die ich behandeln sollte, lassen Sie es mich wissen.