Come rendere un file AppleScript esistente come un servizio?

8

Ho creato un AppleScript, l'ho salvato come file in una cartella specifica sul mio disco rigido. Ora voglio assegnargli una scorciatoia e sembra che devo creare un servizio via Automator, ma Run AppleScript mi chiede di inserire il codice, mentre voglio eseguire il file .scpt già esistente. Come si fa?

    
posta Nakilon 01.09.2013 - 18:11
fonte

6 risposte

6

Sì, Automator è l'opzione migliore qui. Per creare il servizio segui questi passaggi:

  1. Apri Automator e seleziona Servizio:

  2. Cerca"applescript" e trascina l'azione sul riquadro di destra:

  3. CambiaServicereceivesselectedtextinServicereceivesnoinputinmodochecompaiasemprenelmenuServizi:

  4. Sostituisci (* Your script goes here *) con:

    do shell script "/usr/bin/osascript /path/to/your/script.scpt"
    

    se desideri eseguire il tuo file .scpt esistente. Nota che osascript non può gestire l'interazione dell'utente come visualizzare una finestra di dialogo:

    Persuperarequestalimitazioneutilizza questa soluzione alternativa o semplicemente sostituisci (* Your script goes here *) con il contenuto del tuo script.

  5. Salva:

  6. Selodesideri,puoiassegnareunascorciatoiaaltuonuovoservizio.SelezionaServizi>PreferenzeservizinelFinder(oqualsiasialtraapplicazioneaperta):

  7. Assegna uno shorcut non così comune:

  8. Orailtuoservizioèaccessibiledaqualsiasiapplicazionetramiteilcollegamentochehaiassegnatonelpassaggioprecedente:

Se vuoi eliminare il servizio aperto ~/Library/Services , elimina il servizio e svuota il cestino:

    
risposta data 02.09.2013 - 10:29
fonte
4

Nello script, aggiungi un argomento on run :

on run
    -- do whatever the script does
end run

Quindi puoi utilizzare l'azione "Esegui script shell" di Automator, con il comando osascript :

osascript /path/to/script.scpt

osascript è un comando che esegue AppleScript nella shell. Sono necessarie le linee nello script per consentire l'esecuzione dello script all'esterno dell'editor AppleScript.

    
risposta data 01.09.2013 - 18:18
fonte
3

Forse dovresti dare un'occhiata a Questo servizio , che ti consente di "creare servizi Mac OS X da qualsiasi script ".

    
risposta data 01.09.2013 - 18:44
fonte
2

Non consiglierei di creare servizi di Automator per assegnare scorciatoie agli script. C'è un bug in 10.7 e 10.8 dove le scorciatoie da tastiera per i servizi di Automator non funzionano sempre fino a quando non si passa con il mouse sul menu servizi dalla barra dei menu. C'è anche un ritardo relativamente lungo (forse da 0,1 a 1 s) prima che i servizi vengano eseguiti.

Vedi questa risposta per altri modi per assegnare scorciatoie da tastiera agli script. Io uso FastScripts e Alfred me stesso.

    
risposta data 02.09.2013 - 11:14
fonte
1

È possibile eseguire lo script esistente con un semplice servizio di automator come questo. E assegna la scorciatoia dalla scorciatoia della tastiera normalmente. Ricorda che alcune applicazioni potrebbero dover essere riavviate prima di selezionare le scorciatoie.

esempio.

sayHello script:

say "hello"

Servizio di automazione:

Cheinquestoesempioutilizza:

  • Nessuninput
  • Qualsiasiapplicazione.

L'azioneèunEseguiscriptdishellIlcodiceutilizzasoloilcomandounixosascripteilpercorsodelfile.Passal'inputpuòessereperstdnoperargomento

Nonènientedispecialedafareperloscript.

Perulterioridettaglisul comando oslook guarda l'uomo pagine per questo. La pagina man fornisce un altro esempio in cui puoi passare argomenti allo script.

    
risposta data 02.09.2013 - 12:46
fonte
0

Per sviluppare un servizio, è necessario un software che creerà un servizio come uno dei seguenti:

  1. Automator per creare un flusso di lavoro
  2. ThisService per creare un servizio.
  3. Xcode per creare un .app

Tutti i suddetti tipi di servizi sono pacchetti. Sono tutte cartelle che contengono un plist che specifica gli attributi di un servizio.

Ecco come ho creato un servizio utilizzando Automator che utilizza un'azione Automator "Esegui AppleScript" per chiamare uno script .script esistente.

    
risposta data 02.09.2013 - 17:39
fonte

Leggi altre domande sui tag