Acest tutorial AppleScript vă va arăta cum să configurați grupuri de aplicații care pot fi lansate simultan. Pe parcurs, vom învăța cum să implementăm liste, manipulanți, declarații și cum să lucrăm cu rezultatele acțiunilor unui utilizator.
Ideea de bază aici este că probabil aveți grupuri diferite de aplicații pe care doriți să le deschideți pentru diferite sarcini, de exemplu pentru designul web sau scris. Nu ar fi frumos dacă ați putea deschide cu ușurință toate aceste aplicații dintr-o dată în timp ce mergeți în diferite părți ale zilei?
Putem realiza acest lucru destul de ușor cu AppleScript. Algoritmul de aici are doar patru pași:
Din perspectiva utilizatorului, veți vedea o listă cu diferite grupuri de aplicații afișate pe ecran (lucru, redare, etc.). Veți alege grupul pe care doriți să-l lansați, apăsați "OK" și toate acestea vor fi lansate pentru dvs. Destul de la moda
Primul lucru pe care trebuie să-l facem este să stabilim diferitele noastre grupuri de aplicații. Vom folosi trei grupuri diferite pentru acest tutorial: locul de muncă, jocul și productivitatea, fiecare dintre ele conțină o listă proprie de aplicații.
În Applescript, o listă seamănă mult cu o variabilă, doar că deține mai multe elemente distincte în loc de una singură. O listă care conține vocalele alfabetului englez ar arăta astfel:
[AppleScript]
setați vocaleleList la "a", "e", "i", "o", "u", "y"
[/ AppleScript]
De aici, putem să luăm și să lucrăm cu elementele de listă individuale. De exemplu, următoarea returnează "e".
[AppleScript]
--Returnează "e"
setați vocaleleList la "a", "e", "i", "o", "u", "y"
returnați elementul 2 al vocaleList
[/ AppleScript]
Rețineți că multe limbi de programare sunt "indexate zero", astfel încât primul element dintr-o matrice sau dintr-o listă este de fapt element zero. Nu este cazul cu AppleScript. Primul element dintr-o listă este elementul unu.
Pentru primul pas, vom stabili un total de patru liste diferite. Primele trei vor conține nume exacte de aplicații așa cum apar în OS X, iar ultima va conține cele trei categorii pe care le-am împărțit grupurile noastre de aplicații: Work, Play și Productivity.
[AppleScript]
--Setați grupuri
setați grupul de lucru la "Mail", "Safari", "TextEdit"
setați grupul PlayGroup la "Safari", "App Store", "iTunes"
setați Grupul de productivitate la "Note", "Mementouri", "Mail"
setați Grupurile de aplicații la "Work", "Play", "Productivity"
[/ AppleScript]
Aici, prima linie de coduri stabilește o variabilă care conține o listă de nume de aplicații: Mail, Safari și TextEdit. Repet acest proces de două ori mai mult pentru celelalte grupuri.
Ultima linie de cod repetă același proces, dar de această dată umple lista cu trei nume de grup în mod arbitrar pe care le-am făcut: Work, Play și Productivity.
Codificarea înseamnă a lua cantități mari de informații și a le plasa în construcții ușor de gestionat.
Beneficiul acestui pas este că am încurcat a tonă de informații în patru variabile ușor de reamintit. Codificarea înseamnă a lua cantități mari de informații și a le plasa în construcții ușor de gestionat. Vom vedea acest lucru la o scară chiar mai mare în pasul următor.
Bacsis: Am folosit toate aplicațiile implicite pentru grupurile mele, dar dacă nu sunteți pe Mountain Lion, nu veți avea note și mementouri. Modificați aplicațiile din listă la cele pe care le-ați instalat de fapt.
După configurarea variabilelor mele, îmi place să trec la orice agenți care trebuie să fie construiți.
În pasul anterior, am luat mai multe elemente și le-am plasat într-o listă care să fie legată de o singură variabilă. Cu un manipulator, faceți ceva similar și luați o întreagă listă de comenzi, acțiuni etc. și legați-le într-o variabilă.
La fel ca în cazul funcțiilor din alte limbi, persoanele care le pot utiliza pot fi configurate să accepte o informație când sunt apelate. Această informație va fi "trecută" și utilizată pe tot parcursul procesului de manipulare.
Cum putem ști ce acțiuni ar trebui să fie declarate de la sine și care ar trebui să fie înfășurate într-un manipulator? Regula de bază pentru a trăi este că, dacă vă aflați repetând o bucată mare de cod de mai multe ori, este probabil timpul să înființezi un handler.
Dacă vă aflați repetând o bucată mare de cod de mai multe ori, probabil că este timpul să vă configurați un handler.
Mai târziu, în scriptul nostru, vom avea o nevoie repetată de a lansa toate aplicațiile dintr-o listă furnizată. Acesta este locul perfect pentru implementarea unui handler. Sintaxa pentru a configura acest lucru arată astfel:
[AppleScript]
pe appLauncher (selectatGrup)
end appLauncher
[/ AppleScript]
După cum puteți vedea, este un pic cam ca un bloc spune, doar că începe cu cuvântul "on" pentru a indica că este un handler. Aici "appLauncher" este pur și simplu numele pe care l-am ales pentru managerul meu. Ca și în cazul variabilelor, păstrați mereu aceste simple și descriptive.
Următoarea parte a acestei linii apare în paranteze: (selectatGrup). Aici treceți într-o variabilă care poate fi apoi accesată și procesată de-a lungul handlerului. În cazul nostru, atunci când vom folosi acest handler mai târziu, vom trece într-una din cele trei liste de grupuri de aplicații.
Acum, că avem o coajă care definește limitele manipulatorului, îl putem umple cu comenzi.
[AppleScript]
--App Handler Launcher
pe appLauncher (selectatGrup)
repetați cu i de la 1 la (numărul elementelor din grupul selectat)
spuneți aplicația (elementul i al grupului selectat)
Activati
sfarsitul spune
repetați sfârșitul
end appLauncher
[/ AppleScript]
Mai întâi, am setat o repetare care trece prin fiecare element din orice listă trecem, apoi folosesc fiecare dintre aceste elemente ca variabilă pentru a servi drept nume de aplicație într-un bloc tell. În cele din urmă, o comandă simplă "activate" lansează aplicațiile din listă.
Acum, când declarăm variabilele noastre și setul nostru de handler este momentul să începem să interacționăm cu utilizatorul. Ceea ce căutăm să facem este să creăm o fereastră de dialog care conține o listă de opțiuni.
Se pare că va fi o mulțime de muncă, dar în realitate este foarte simplu. Am creat deja lista noastră de aplicații, acum avem nevoie de o scurtă linie de cod pentru a spune AppleScript să prezinte lista.
[AppleScript]
--Permiteți utilizatorului să selecteze un grup
setațiSelecția pentru a alege din lista de aplicațiiGrupuri cu titlul "Care grup de aplicații?"
[/ AppleScript]
Aici am folosit comanda "alege din listă" pentru a afișa un dialog standard încorporat și a folosit "titlu" pentru a atribui un text în partea de sus a dialogului.
Observați că nu am spus doar AppleScript să dea utilizatorului o listă. De fapt, setăm întregul proces ca o variabilă cu comanda "set".
Aceasta este o modalitate scurtă și dulce de a crea un dialog și de a obține rezultatul într-un singur pas. Se va afișa caseta de dialog, utilizatorul va alege un grup de aplicații și rezultatul va fi atribuit "selecției" ca variabilă.
Acum vine partea complicată. Utilizatorul a văzut și a interacționat cu dialogul și trebuie să procesăm rezultatul. Pentru a face acest lucru, trebuie să luăm în considerare în mod literal orice scenariu posibil și să îl luăm în considerare. Nu presupuneți niciodată că utilizatorii vor fi logici sau competenți. În schimb, presupuneți că vor lua toate traseele posibile, în special cele care pot provoca o eroare.
Nu presupuneți niciodată că utilizatorii vor fi logici sau competenți.
Primul scenariu pe care aș vrea să-l înregistrez este o anulare. Fereastra apare, utilizatorul își schimbă mintea, iar presele anulează ... acum ce?
Într-un pas anterior, am aruncat rezultatul ferestrei în Selecție. Dacă utilizatorul anulează, valoarea acestei variabile va fi setată la "false". Aceste cunoștințe fac scenariul ușor de manevrat cu o instrucțiune if:
[AppleScript]
--Dacă utilizatorul anulează
dacă Selecția este falsă atunci
numărul de eroare -128
sfârșit dacă
[/ AppleScript]
Ce este asta? numărul de eroare -128 Afaceri? AppleScript are o întreagă listă de erori posibile, fiecare dintre acestea având un număr unic. Se întâmplă că "utilizatorul anulat" este -128.
Tot ceea ce facem aici este de a raporta ceea ce sa întâmplat, astfel încât, dacă ați analizat rezultatele scriptului nostru în Editorul Script, ați vedea că utilizatorul a anulat operația. Pe măsură ce se întâmplă această acțiune, scriptul se termină și dispare din viziunea utilizatorului, ceea ce este exact ceea ce vrem în acest caz, așa că până aici vom merge.
Acum vine finalizarea mare. Dacă utilizatorul nu anulează operația, atunci trebuie să fi selectat unul dintre cele trei grupuri. Treaba noastră este să aflăm care și să acționăm în consecință.
Înainte de lansarea în aceste trei scenarii, trebuie să procesăm variabila noastră puțin. Când utilizatorul selectează un element și atinge "ok", atribuim o listă la Selecție (are doar un singur element, dar este totuși o listă).
Pentru a rezolva aceasta, pur și simplu ignorați variabila după cum urmează.
[AppleScript]
--Dacă utilizatorul anulează
dacă Selecția este falsă atunci
numărul de eroare -128
altfel
setați Selecția la elementul 1 din Selecție
sfârșit dacă
[/ AppleScript]
Acest lucru pare puțin ciudat, dar dacă nu faceți acest lucru, scriptul va arunca o eroare, deci nu uitați să nu treceți peste acest pas!
Acum, că am făcut acea bucată de gospodărie, putem trece la compararea rezultatelor utilizatorului cu diferitele posibilități. Prima opțiune este că utilizatorul a ales grupul de aplicații "Lucru".
În acest caz, variabila "theSelection" ar trebui să fie egală cu primul element din lista "appGroups" (ambele vor avea valoarea "Work"). Să formăm altă declarație dacă să testeze adevărul despre egalitate.
[AppleScript]
--Dacă utilizatorul anulează
dacă Selecția este falsă atunci
numărul de eroare -128
altfel
setați Selecția la elementul 1 din Selecție
--Dacă selecția este workgroup
dacă theSelection = (elementul 1 al appGroups) atunci
appLauncher (Workgroup)
sfârșit dacă
sfârșit dacă
[/ AppleScript]
După cum puteți vedea, dacă declarația se dovedește a fi adevărată, atunci vom rula manualul nostru de la început cu "workgroup" trecut ca lista cu care vrem să lucrăm cu.
În acest moment, managerul nostru va contoriza numărul de elemente din grupul de lucru, apoi repetați un bloc spune cu o comandă "activate" pentru fiecare dintre aceste elemente. Acest lucru va face ca Mail, Safari și TextEdit să lanseze cu succes și scriptul se va termina.
Folosind aceiași pași, putem termina scriptul nostru prin adăugarea a două instrucțiuni "else if" care compară Selecția cu celelalte două elemente din appGroups și lansează un handler cu lista corespunzătoare ca intrare.
În fiecare caz, handlerul va trece și va lansa aplicațiile din grupul selectat.
[AppleScript]
--Dacă utilizatorul anulează
dacă Selecția este falsă atunci
numărul de eroare -128
altfel
setați Selecția la elementul 1 din Selecție
--Dacă selecția este workgroup
dacă theSelection = (elementul 1 al appGroups) atunci
appLauncher (Workgroup)
--Dacă selecția este playGroup
altfel, dacă Selection = (elementul 2 al appGroups) atunci
appLauncher (playgroup)
--Dacă selecția este grupul de productivitate
altfel, dacă Selection = (elementul 3 al appGroups) atunci
appLauncher (productivityGroup)
altfel
întoarcere
sfârșit dacă
sfârșit dacă
[/ AppleScript]
Sfat utilizator avansat: Aceasta este o mulțime de declarații care să se îmbrace împreună. Puteți rescrie acest cod folosind o declarație de repetare similară cu cea folosită la început?
Sperăm că am trecut prin faptul că veți înțelege pe deplin fiecare piesă a scenariului. Iată o privire la scenariul complet într-o singură fotografie:
[AppleScript]
--Setați grupuri
setați grupul de lucru la "Mail", "Safari", "TextEdit"
setați grupul PlayGroup la "Safari", "App Store", "iTunes"
setați Grupul de productivitate la "Note", "Mementouri", "Mail"
setați Grupurile de aplicații la "Work", "Play", "Productivity"
--App Handler Launcher
pe appLauncher (selectatGrup)
repetați cu i de la 1 la (numărul elementelor din grupul selectat)
spuneți aplicația (elementul i al grupului selectat)
Activati
sfarsitul spune
repetați sfârșitul
end appLauncher
--Permiteți utilizatorului să selecteze un grup
setațiSelecția pentru a alege din lista de aplicațiiGrupuri cu titlul "Care grup de aplicații?"
--Dacă utilizatorul anulează
dacă Selecția este falsă atunci
numărul de eroare -128
altfel
setați Selecția la elementul 1 din Selecție
--Dacă selecția este workgroup
dacă theSelection = (elementul 1 al appGroups) atunci
appLauncher (Workgroup)
--Dacă selecția este playGroup
altfel, dacă Selection = (elementul 2 al appGroups) atunci
appLauncher (playgroup)
--Dacă selecția este grupul de productivitate
altfel, dacă Selection = (elementul 3 al appGroups) atunci
appLauncher (productivityGroup)
altfel
întoarcere
sfârșit dacă
sfârșit dacă
[/ AppleScript]
Acum, că aveți scenariul complet, salvați-l ca o aplicație, dați-i o pictogramă fantezie și aruncați-o în doc.
Dacă ați urmat cu succes acest tutorial și ați înțeles toți pașii, felicitări! Sunteți cu siguranță un AppleScripter mai mult decât competent și este timpul să vă ramificați pe cont propriu și să creați câteva scripturi minunate.
Lăsați un comentariu de mai jos și spuneți-mi despre scenariile pe care le-ați construit pentru Mac. De asemenea, dacă aveți alte idei pentru scripturi pe care ar trebui să le acordez, anunțați-mă.