Se hai mai fatto uno script sul Mac, probabilmente hai visto AppleScript. AppleScript è stato lo standard di fatto per l'unione di applicazioni insieme e per lo scripting dell'interfaccia utente.
Da OS X 10.10 Yosemite, esiste un secondo linguaggio di scripting per lo scripting dell'interfaccia utente: JavaScript per l'automazione (JXA).
In questo tutorial, ti aiuterò a imparare questa alternativa a AppleScript con alcuni esempi del mondo reale.
Esistono molti modi per eseguire a JXA script. Il modo standard per eseguire lo script JXA è con Script Editor questa è una parte del sistema operativo.
Script Editor impostato per JavaScript (JXA)Con la casella di riepilogo nell'angolo in alto a sinistra, sotto il pulsante stop, impostare su JavaScript invece di AppleScript, hai un pieno JavaScript interprete. Per accedere all'attuale applicazione per lo scripting, aggiungi queste righe:
// // Scarica l'applicazione corrente e configurala // per lo scripting. // var app = Application.currentApplication (); app.includeStandardAdditions = true;
La prima riga otterrà l'oggetto JXA per l'applicazione che esegue il codice. La seconda riga ti consente di aggiungere finestre di dialogo e altri gadget a quell'oggetto dell'applicazione.
Ora aggiungi questo alla sceneggiatura:
// // Invia un messaggio all'utente. // app.displayAlert ("Questo è un messaggio");Esempio di messaggio
Quando lo esegui, verrà visualizzata una finestra di dialogo con il messaggio "Questo è un messaggio".
Se si desidera scegliere da un elenco di elementi, aggiungere quanto segue:
// // Consenti all'utente di scegliere da un elenco. // var lang = app.chooseFromList (['JavaScript', 'AppleScript', 'JXA'], withPrompt: 'Qual è la tua lingua preferita?'); app.displayNotification (lang, withTitle: 'Language Chooser', sottotitolo: 'La tua scelta è ...');
Il chooseFromList ()
la funzione accetta una serie di stringhe e un oggetto facoltativo con opzioni di configurazione. Il withPrompt l'opzione di configurazione ti consente di impostare il testo visualizzato sopra l'elenco di stringhe. La stringa selezionata sarà restituita.
Il displayNotification ()
la funzione viene quindi utilizzata per visualizzare una notifica con le informazioni fornite all'utente. È possibile impostare il titolo e il sottotitolo della notifica con l'oggetto di configurazione.
Quando premi il pulsante Esegui (il triangolo a punta destra nella barra degli strumenti), scegli il tuo linguaggio di programmazione preferito nella finestra di dialogo.
Notifica visualizzataQuando ne selezioni uno, come JXA, la tua selezione viene quindi mostrata in un popup di notifica. Se l'utente seleziona annulla nella finestra di dialogo, il risultato restituito sarà Falso booleano.
Se è necessario ottenere informazioni dall'utente, utilizzare il displayDialog ()
funzione. Con questa funzione, è necessario chiamarlo all'interno di a prova a prendere
struttura perché se l'utente preme il pulsante Annulla, genererà un errore. Digita il seguente codice:
// // Ottieni informazioni digitate dall'utente. // prova var age = app.displayDialog ('Quanti anni hai?', defaultAnswer: ""); app.displayNotification (age.textReturned + 'years old!', withTitle: 'You are How old?'); catch (e) app.displayNotification ('Utente annullato', withTitle: 'Error');Ottenere input dall'utente
Eseguendo quel codice, ti verrà richiesta la tua età in un prompt. Quando si digita un'età e si fa clic su OK, verrà visualizzata una notifica che chiede il proprio nome. Se si preme Annulla, viene visualizzata una notifica con il messaggio Errore utente annullato.
Il classico esempio di automazione del programma è quello di aprire iTunes, e suona una canzone. In un nuovo file chiamato iTunesScript.scpt, aggiungi il seguente codice:
// // Ottieni un oggetto applicazione per iTunes. // var itune = Applicazione ('iTunes'); itune.activate (); // // Suonare una canzone. // itune.play (); // // Per mettere in pausa: // itune.pause () // // Per interrompere: // itune.stop () // // // Ottieni le informazioni sulla traccia corrente. // var track = itune.currentTrack () var info = track.name () + "-" + track.artist () + "-" + track.album () + "-" + track.duration (); // // Mostra le informazioni all'utente. // var app = Application.currentApplication (); app.includeStandardAdditions = true; app.displayNotification (informazioni, withTitle: 'iTunes Song');
Questo script riprodurrà la canzone corrente in iTunes e visualizza il nome, l'artista, l'album e la durata dei brani in una notifica.
Script iTunesLe basi per il controllo di un'applicazione sono ottenere un oggetto applicazione, eseguire metodi dell'oggetto per ottenere le informazioni necessarie o l'effetto desiderato. È possibile ottenere informazioni sui metodi validi di ciascun oggetto dell'applicazione dal File> Apri dizionario menu nel Script Editor.
Se vuoi eseguire lo script su una riga di comando, devi digitare questo comando in una finestra di terminale:
osascript -l JavaScript iTuneScript.scpt
Il -l JavaScript dice ad un utente che lo script sta usando JXA.
Nel file zip di download, troverai il QuickEditJXA.alfredworkflow Alfred 3 flusso di lavoro.
Questo flusso di lavoro ti consente di copiare una selezione in un programma, incollarla in un altro programma che hai impostato prima di mano, e quindi copiare le modifiche sul programma originale.
Questo è un flusso di lavoro molto utile che consente di risparmiare un sacco di tempo. Il mio editor preferito per fare questi rapidi cambiamenti è TextWell.
Alfred Workflow: Quick Edit in JXAIl set di blocchi verde copia il testo già selezionato e lo inserisce nell'editor. Nel Alfred, un'azione può essere suddivisa in un numero qualsiasi di altre catene di azioni. In questo, si divide in due modi.
La prima linea d'azione viene eseguita per prima, quindi esegue il backup fino alla seconda riga di azione. La prima azione della linea superiore è a JXA script:
function run (argv) var query = argv [0]; // // Ottieni il nome dell'applicazione corrente. // var system = Application ("Eventi di sistema"); var proc = system.processes.whose (frontmost: '=': true). name (); return proc;
Questo JXA lo script otterrà il nome dell'applicazione più in alto dal processo secondario Eventi di sistema. La riga 7 ottiene un oggetto applicazione su Eventi di sistema. La riga 9 ricerca l'array di processi attivi con a .di chi (frontmost: '=': true)
comando che trova il processo con il in primo piano
proprietà impostata su true. Quindi restituisce il nome di quel processo.
UN JXA script in Alfred deve avere la funzione run () che accetta un array di input. Qualunque cosa restituisca questa funzione viene quindi passata al blocco successivo nel flusso di lavoro: un comando write to file. Questo salva il nome dell'applicazione corrente sul file per tornare a questa applicazione dopo la modifica.
La seconda linea di azione chiama quanto segue JXA script:
function run (argv) var editorName = argv [0]; var ed = Application (editorName); ed.activate ();
Il nome dell'editor viene passato dal precedente Arg e Vars bloccare. L'applicazione dell'editor impostata dall'utente nella sezione delle variabili d'ambiente del Flusso di lavoro Alfred. La riga 4 ottiene l'oggetto dell'applicazione per l'editor e Line 5 attiva l'editor.
Sull'azione Incolla (i blocchi viola) ce n'è uno JXA routine:
ObjC.import ('stdlib') function run (argv) var app = Application.currentApplication (); app.includeStandardAdditions = true; var dataDir = $ .getenv ('alfred_workflow_data'); var handle = app.openForAccess (dataDir + "/process.txt"); var prog = app.read (handle); var dest = Application (prog.trim ()); dest.activate (); ritorno ";
La linea 1 include il stdlib
che è la libreria Objective C per l'accesso standard al sistema. JXA consente di utilizzare qualsiasi libreria presente nel sistema per l'utilizzo negli script. Puoi letteralmente scrivere un'applicazione completa nel modo giusto JXA!
Le righe 4-5 ottengono l'oggetto applicazioni corrente e lo configurano per lo scripting. La linea 7 utilizza il stdlib
per ottenere la configurazione della variabile di ambiente Alfred: alfred_workflow_data
. Questa variabile d'ambiente dà il percorso alla directory dei dati per il flusso di lavoro corrente.
La riga 9 apre il file process.txt
nella directory dei dati del flusso di lavoro e la riga 10 legge i suoi contenuti. Le righe 12-13 portano l'applicazione in primo piano.
Una volta che l'applicazione originale è in primo piano, un ritardo attende il sistema operativo per raggiungere, e quindi i problemi del flusso di lavoro a cmd-v
per incollarlo nell'applicazione.
La versione originale di questo flusso di lavoro è stata utilizzata PHP e Applescript. Usando JXA, questa versione del flusso di lavoro viene eseguita in modo molto più rapido e affidabile. Allo stesso modo, puoi usare JXA anche in altri programmi. Maestro della tastiera, nocciola, e TextSoap, con l'uso di un Automator script, solo per citarne alcuni.
È inoltre possibile trovare ulteriori informazioni su JXA da questi siti Web:
In questo tutorial, ti ho mostrato come utilizzarlo JXA nel Script Editor, nella riga di comando e in un Alfred flusso di lavoro. Ora che sai come usare JXA sul tuo Mac, puoi creare degli script utili per automatizzare le attività.
Fatemi sapere, nei commenti qui sotto, cosa create.