Ich habe ein AppleScript erstellt und es als Datei in einem bestimmten Ordner auf meiner Festplatte gespeichert. Jetzt möchte ich ihm eine Verknüpfung zuweisen und es sieht so aus, als müsste ich einen Dienst über Automator erstellen, aber der Run AppleScript
fordert mich auf, den Code einzufügen, während ich die bereits vorhandene .scpt-Datei ausführen möchte. Wie geht das?
Ja, Automator ist hier die beste Option. Führen Sie die folgenden Schritte aus, um den Dienst zu erstellen:
Öffnen Sie Automator und wählen Sie Service:
Suchen Sie nach „Applescript“ und ziehen Sie die Aktion in den rechten Bereich:
Ändern Sie Service receives selected text
zu Service receives no input
, damit es immer im Menü „Dienste“ angezeigt wird:
Ersetzen (* Your script goes here *)
durch:
do shell script "/usr/bin/osascript /path/to/your/script.scpt"
.scpt
wenn Sie Ihre vorhandene Datei ausführen möchten . Beachten Sie, dass osascript keine Benutzerinteraktionen wie das Anzeigen eines Dialogfensters verarbeiten kann:
Um diese Einschränkung zu umgehen, verwenden Sie entweder diese Problemumgehung oder ersetzen Sie sie einfach durch (* Your script goes here *)
den Inhalt Ihres Skripts.
Speichern Sie es:
Wenn Sie möchten, können Sie Ihrem neuen Dienst eine Verknüpfung zuweisen. Wählen Sie im Finder (oder einer anderen geöffneten Anwendung) Dienste > Diensteinstellungen aus:
Weisen Sie eine nicht so häufige Verknüpfung zu:
Jetzt ist Ihr Dienst von jeder Anwendung aus über die Verknüpfung zugänglich, die Sie im vorherigen Schritt zugewiesen haben:
Wenn Sie jemals den Dienst open loswerden möchten ~/Library/Services
, löschen Sie den Dienst und leeren Sie den Papierkorb:
Fügen Sie im Skript ein on run
Argument hinzu:
on run
-- do whatever the script does
end run
Dann können Sie die Automator-Aktion „Run Shell Script“ mit dem osascript
Befehl verwenden:
osascript /path/to/script.scpt
osascript
ist ein Befehl, der AppleScript in der Shell ausführt. Sie benötigen die Zeilen im Skript, damit das Skript außerhalb des AppleScript-Editors ausgeführt werden kann.
on run {input, arguments}
Formular verwendet, aber selbst in Automator können Sie den Run-Handler einfach entfernen.Vielleicht möchten Sie einen Blick auf This Service werfen , mit dem Sie "Mac OS X-Dienste aus jedem Skript erstellen können".
Ich würde nicht empfehlen, Automator-Dienste zu erstellen, um Skripts Verknüpfungen zuzuweisen. Es gibt einen Fehler in 10.7 und 10.8, bei dem die Tastaturkürzel für Automator-Dienste nicht immer funktionieren, bis Sie den Mauszeiger über das Dienstemenü in der Menüleiste bewegen. Es gibt auch eine relativ lange (vielleicht 0,1 bis 1 s) Verzögerung, bevor Dienste ausgeführt werden.
In dieser Antwort finden Sie weitere Möglichkeiten zum Zuweisen von Tastaturkürzeln zu Skripts. Ich selbst verwende FastScripts und Alfred.
Sie können das vorhandene Skript mit einem einfachen Automator-Dienst wie diesem ausführen. Und weisen Sie Ihre Tastenkombination wie gewohnt aus den Tastaturkürzeln zu. Denken Sie nur daran, dass einige Anwendungen möglicherweise neu gestartet werden müssen, bevor sie die Verknüpfungen übernehmen.
Beispiel.
sayHallo Skript:
say "hello"
Automator-Dienst:
Was in diesem Beispiel verwendet:
Die Aktion ist ein Shell-Skript ausführen. Der Code verwendet nur den Unix-Befehl osascript und den Pfad zur Datei. Pass-Eingabe kann an stdn oder an Argument erfolgen
Das heißt, es muss nichts Besonderes am Skript vorgenommen werden.
Weitere Einzelheiten zum osascript-Befehl finden Sie in den entsprechenden Manpages . Die Manpage gibt ein weiteres Beispiel, wo Sie Argumente an das Skript übergeben können.
Um einen Dienst zu entwickeln, benötigen Sie eine Art von Software, die einen Dienst erstellt, wie z. B. eine der folgenden:
Alle oben genannten Arten von Dienstleistungen sind Pakete. Dies sind alles Ordner, die eine plist enthalten, die die Attribute eines Dienstes angibt.
So habe ich mit Automator einen Dienst erstellt, der eine Automator-Aktion „Run AppleScript“ verwendet, um ein vorhandenes .script aufzurufen.
Nakilon
Jaume
osascript
, wie in anderen Antworten erläutert.Jaume
osascript
Sie Ihre Datei in Automator ausführen können.scpt
, eine Einschränkung und zwei Problemumgehungen.Zack
Jaume
/usr/bin/osascript /path/to/your/script.scpt
das Skript beim Ausführen in einem Terminalfenster auch 4 bis 5 Sekunden zum Starten?Zack
Jaume
sleep 10 && /usr/bin/osascript /path/to/your/script.scpt
. Dadurch haben Sie 10 Sekunden Zeit, um zu Mail zu wechseln und die Nachricht auszuwählen, bevor das Skript ausgeführt wird. Könntest du es versuchen und berichten?Zack
Jaume
osascript
4 zusätzliche Sekunden benötigt werden, um Ihr Skript auszuführen, aber Automator ist nicht die Ursache für die Verzögerung, was meine Sorge war. Vielleicht möchten Sie debuggenosascript
, siehe opensourcehacker.com/2011/12/02/… und stackoverflow.com/questions/31045575/…