Esegui applecript senza aprire l'editor


12

Ogni volta che voglio eseguire uno script apple viene visualizzato l'editor.

C'è un modo per eseguirlo direttamente?

Risposte:


19

Il modo in cui lo script viene salvato ha un grande effetto su come funzionerà in Mac OS X. Sembra che il tuo script sia appena salvato come script e questo è ciò che sta causando l'apertura dell'editor di script ogni volta che apri lo script.

Per risolvere il problema, apri lo script nell'editor AppleScript e salvalo come applicazione. Questo dovrebbe essere il trucco.

I passaggi sono (nell'editor)

File> Salva con nome> quindi imposta Formato file sull'applicazione, quindi salva.

testo del link


Ora viene richiesto: "Premi Esegui per eseguire o esci per uscire" ... ma immagino sia colpa dello script! Grazie
OscarRyz,

1
Selezionando la casella di controllo Esegui potrebbe interrompere la visualizzazione del prompt.
Bruce McLeod,

La mia comprensione è che la casella di controllo Esegui solo non consente la modifica dello script in un secondo momento.
jtbandes,

@jtbandes ahhhh ... ha senso
Bruce McLeod,

2
Si noti che in Yosemite, il metodo corrente è utilizzare File -> Esporta. Non c'è più il dialogo Salva con nome nell'ultima versione dell'editor AppleScript.
anon58192932

7

Quando si salva lo script, è possibile selezionare "Applicazione" dal menu a discesa Formato file; allora sarai in grado di eseguirlo e sarai ancora in grado di trascinarlo in Script Editor per aprire lo script; oppure puoi scegliere Esegui solo per non salvare la versione modificabile.

In alternativa, è possibile utilizzare il osascriptcomando in Terminale, come osascript /path/to/scripto osascript -e "a short script here".


1

Puoi anche posizionare lo script nella cartella ~ / Library / Scripts / Finder / ed eseguirlo direttamente dal menu Script.


1

In macOS High Sierra 10.13 non è presente File / Salva con nome.

È necessario utilizzare File / Esporta / Formato file: Applicazione Esportazione file Formato del file


0

Un altro modo è quello di creare un servizio in Automator che utilizza il osascriptcomando per eseguire un .scpt nel Finder.

(Non sto usando Automator in inglese quindi il testo potrebbe non essere accurato)

  1. Avvia Automator
  2. File> Nuovo e selezionare Servizio
  3. In "Service Accepts:" selezionare "File o cartella"
  4. In "Posizione:" seleziona "Finder.app"
  5. Cerca "Esegui AppleScript" e trascina l'elemento sul lato destro
  6. Nella casella Esegui AppleScript, inserisci il seguente codice:

    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. File> Salva e assegnagli un nome come "Esegui AppleScript"

  8. Ora puoi fare clic con il pulsante destro del mouse su un file .scpt nel Finder e selezionare "Esegui AppleScript" e vedere eseguito lo script.

Riferimento: fonte della subroutine - AppleScript: routine secondarie essenziali


Vedo problemi con il tuo codice AppleScript. 1. Non hai errori nella gestione o nel codice per convalidare ciò che è selezionato è un file .scpt prima che venga passato osascripte non lo hai codificato per gestire se nel Finder è selezionato più di un file .scpt. 2. Non è assolutamente necessario passare attraverso tale rigmarole di codifica quando la seguente singola riga di codice sostituisce tutto ciò che è stato aggiunto all'azione Esegui AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of inputEcco un esempio minimo per sostituire tutto nel tuo attuale codice AppleScript: paste.ee/p/XngKA
user3439894

Nell'esempio minimo, il ifblocco di istruzioni potrebbe essere espanso con una elseclausola che visualizza un messaggio che il file selezionato non era un file .scpt. In questo modo l'utente non viene lasciato a chiedersi perché non è successo nulla se non ha visto che ha accidentalmente selezionato il tipo di file errato durante l'esecuzione del servizio.
user3439894
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.