Uruchom AppleScript bez otwierania edytora

12

Za każdym razem, gdy chcę uruchomić skrypt jabłkowy, pojawia się edytor.

Czy istnieje sposób, aby uruchomić go bezpośrednio?

OscarRyz
źródło

Odpowiedzi:

19

Sposób zapisywania skryptu ma duży wpływ na to, jak będzie on działał w systemie Mac OS X. Wygląda na to, że skrypt jest zapisywany jako skrypt, i to powoduje, że edytor skryptów otwiera się przy każdym otwarciu skryptu.

Aby rozwiązać problem, otwórz skrypt w edytorze AppleScript i zapisz go jako aplikację. To powinno wystarczyć.

Kroki są (w edytorze)

Plik> Zapisz jako> następnie ustaw Format pliku na aplikację, a następnie zapisz.

tekst linku

Bruce McLeod
źródło
Teraz pojawia się monit: „Naciśnij, aby uruchomić lub wyjdź, aby wyjść” ... ale myślę, że to błąd skryptu! Dziękuję
OscarRyz
1
Zaznaczenie pola wyboru uruchomienia może zatrzymać wyświetlanie monitu.
Bruce McLeod
Rozumiem, że pole wyboru Uruchom tylko nie pozwala na edycję skryptu później.
jtbandes
@jtbandes ahhhh ... to ma sens
Bruce McLeod
2
Należy pamiętać, że w Yosemite bieżącą metodą jest użycie Plik -> Eksportuj. W najnowszej wersji edytora AppleScript nie ma już okna dialogowego Zapisz jako.
anon58192932
7

Podczas zapisywania skryptu możesz wybrać „Aplikacja” z menu rozwijanego Format pliku; wtedy będziesz mógł go uruchomić i nadal będziesz mógł przeciągnąć go do Script Editor, aby otworzyć skrypt; lub możesz wybrać opcję Uruchom tylko, aby nie zapisać wersji do edycji.

Alternatywnie możesz użyć osascriptpolecenia w terminalu jako osascript /path/to/scriptlub osascript -e "a short script here".

jtbandes
źródło
1

Możesz także umieścić skrypt w folderze ~ / Library / Scripts / Finder / i uruchomić go bezpośrednio z menu Skrypt.


źródło
1

W systemie macOS High Sierra 10.13 nie ma opcji Plik / Zapisz jako.

Musisz użyć Plik / Eksport / Format pliku: Aplikacja Eksport pliku Format pliku

Jay Walker
źródło
0

Innym sposobem jest utworzenie usługi w Automatorze, która używa osascriptpolecenia do uruchomienia .scpt w Finderze.

(Nie używam Automatora w języku angielskim, więc sformułowanie może być niedokładne)

  1. Uruchom Automator
  2. Plik> Nowy i wybierz Usługa
  3. W „Usługa akceptuje:” wybierz „Plik lub folder”
  4. W „Lokalizacja:” wybierz „Finder.app”
  5. Wyszukaj „Uruchom AppleScript” i przeciągnij element na prawą stronę
  6. W polu Uruchom AppleScript wprowadź następujący kod:

    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. Plik> Zapisz i nadaj mu nazwę „Uruchom AppleScript”

  8. Teraz możesz kliknąć prawym przyciskiem myszy plik .scpt w Finderze i wybrać „Uruchom AppleScript” i zobaczyć, jak skrypt został wykonany.

Odniesienie: Źródło podprogramu - AppleScript: Essential Sub-Procedines

Jack Wu
źródło
Widzę problemy z twoim kodem AppleScript. 1. Nie masz obsługi błędów ani kodu, aby sprawdzić, czy wybrany plik .scpt jest przed przekazaniem osascripti nie zakodowałeś go do obsługi, jeśli w Finderze wybrano więcej niż jeden plik .scpt. 2. Absolutnie nie ma potrzeby przechodzenia przez takie rygory kodowania, gdy następujący pojedynczy wiersz kodu zastępuje wszystko, co dodałeś do akcji Uruchom AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of inputOto minimalny przykład zastąpienia wszystkiego w bieżącym kodzie AppleScript: paste.ee/p/XngKA
user3439894
W minimalnym przykładzie ifblok instrukcji można rozwinąć za pomocą elseklauzuli, która wyświetla komunikat, że wybrany plik nie jest plikiem .scpt. W ten sposób użytkownik nie zastanawia się, dlaczego nic się nie stało, jeśli nie widział, że przypadkowo wybrał niewłaściwy typ pliku podczas uruchamiania usługi.
user3439894,