Führen Sie Applescript aus, ohne den Editor zu öffnen

12

Jedes Mal, wenn ich ein Applescript ausführen möchte, wird der Editor angezeigt.

Gibt es eine Möglichkeit, es direkt auszuführen?

OscarRyz
quelle

Antworten:

19

Wie das Skript gespeichert wird, hat einen großen Einfluss auf die Funktionsweise unter Mac OS X. Es klingt so, als ob Ihr Skript nur als Skript gespeichert wird. Daher wird der Skripteditor jedes Mal geöffnet, wenn Sie das Skript öffnen.

Um das Problem zu lösen, öffnen Sie das Skript im AppleScript-Editor und speichern Sie es als Anwendung. Das sollte zum Trick.

Die Schritte sind (im Editor)

Datei> Speichern unter> Setzen Sie das Dateiformat auf Anwendung und speichern Sie es.

Link Text

Bruce McLeod
quelle
Jetzt wird die Eingabeaufforderung angezeigt: "Zum Ausführen drücken oder zum Beenden beenden" ... aber ich denke, das ist ein Skriptfehler! Vielen Dank
OscarRyz
1
Wenn Sie das Kontrollkästchen Ausführen aktivieren, wird möglicherweise die Eingabeaufforderung nicht mehr angezeigt.
Bruce McLeod
Ich verstehe, dass das Kontrollkästchen Nur ausführen die spätere Bearbeitung des Skripts nicht zulässt.
jtbandes
@jtbandes ahhhh ... das macht Sinn
Bruce McLeod
2
Bitte beachten Sie, dass in Yosemite die aktuelle Methode die Verwendung von Datei -> Exportieren ist. In der neuesten Version des AppleScript-Editors gibt es keinen Dialog mehr zum Speichern unter.
anon58192932
7

Beim Speichern des Skripts können Sie "Anwendung" aus der Dropdown-Liste "Dateiformat" auswählen. Dann können Sie es ausführen und es trotzdem in den Skript-Editor ziehen, um das Skript zu öffnen. oder Sie können Nur ausführen auswählen, damit die bearbeitbare Version nicht gespeichert wird.

Alternativ können Sie den osascriptBefehl im Terminal entweder als osascript /path/to/scriptoder verwenden osascript -e "a short script here".

jtbandes
quelle
1

Sie können das Skript auch in Ihrem Ordner ~ / Library / Scripts / Finder / ablegen und direkt über das Menü Skript ausführen.


quelle
1

Unter macOS High Sierra 10.13 gibt es keine Datei / Speichern unter.

Sie müssen Datei / Export / Dateiformat: Anwendung verwenden Dateiexport Datei Format

Jay Walker
quelle
0

Eine andere Möglichkeit besteht darin, einen Dienst in Automator zu erstellen, der mit dem osascriptBefehl eine .scpt-Datei im Finder ausführt.

(Ich verwende Automator nicht auf Englisch, daher ist der Wortlaut möglicherweise nicht korrekt.)

  1. Starten Sie Automator
  2. Datei> Neu und wählen Sie Dienst
  3. Wählen Sie unter "Service akzeptiert:" die Option "Datei oder Ordner".
  4. Wählen Sie unter "Ort:" "Finder.app" aus.
  5. Suchen Sie nach "AppleScript ausführen" und ziehen Sie das Element auf die rechte Seite
  6. Geben Sie im Feld AppleScript ausführen den folgenden Code ein:

    on run {input, parameters}
        tell application "Finder"
            --get the selected file
            set selectedItem to (item 1 of (get selection))
    
            --get location info (folder:file format)
            set fileLocation to (selectedItem as alias) as string
    
            --replace : with / with subroutine
            set the semifinal to my replace_chars(fileLocation, ":", "/")
    
            --remove Macintosh HD with subroutine
            set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
        end tell
        do shell script "osascript " & "\"" & theFinal & "\""
        return input
    end run
    
    on replace_chars(this_text, search_string, replacement_string)
        set AppleScript's text item delimiters to the search_string
        set the item_list to every text item of this_text
        set AppleScript's text item delimiters to the replacement_string
        set this_text to the item_list as string
        set AppleScript's text item delimiters to ""
        return this_text
    end replace_chars
    
  7. Datei> Speichern und geben Sie ihm einen Namen wie "AppleScript ausführen".

  8. Jetzt können Sie mit der rechten Maustaste auf eine .scpt-Datei im Finder klicken und "AppleScript ausführen" auswählen und sehen, wie Ihr Skript ausgeführt wird.

Referenz: Quelle des Unterprogramms - AppleScript: Wesentliche Unterprogramme

Jack Wu
quelle
Ich sehe Probleme mit Ihrem AppleScript-Code. 1. Sie haben keine Fehlerbehandlung oder keinen Code zum Überprüfen der ausgewählten .scpt-Datei, bevor diese übergeben wird, osascriptund haben sie nicht codiert, um zu behandeln, wenn im Finder mehr als eine .scpt-Datei ausgewählt ist. 2. Es ist absolut nicht erforderlich, eine solche Codierungs-Rigmarole zu durchlaufen, wenn die folgende einzelne Codezeile alles ersetzt, was Sie der Aktion "AppleScript ausführen" hinzugefügt haben. do shell script "osascript " & quoted form of POSIX path of item 1 of inputHier ist ein minimales Beispiel, um alles in Ihrem aktuellen AppleScript-Code zu ersetzen: paste.ee/p/XngKA
user3439894
Im minimalen Beispiel könnte der ifAnweisungsblock mit einer elseKlausel erweitert werden, die eine Meldung anzeigt, dass die ausgewählte Datei keine .scpt-Datei war. Auf diese Weise wundert sich der Benutzer nicht, warum nichts passiert ist, wenn er nicht gesehen hat, dass er beim Ausführen des Dienstes versehentlich den falschen Dateityp ausgewählt hat.
user3439894