Introducere în Automator

Automator este, după părerea mea, cea mai subestimată și ignorată componentă a sistemului de operare Mac OS X. Apărut în 2005 odată cu Mac OS X 10.4 Tiger, Automator oferă posibilitatea de a crea un fel de mini-aplicații care execută automat o succesiune de acțiuni alese de noi. Pentru a înțelege mai bine despre ce e vorba, voi începe cu următoarea problemă.

Să presupunem că am mai multe arhive ZIP, pe care vreau să le dezarhivez, iar tot conținutul lor să-l mut într-un singur folder. În mod normal, fără Automator, ar trebui să fac așa:

  • Selectez în Finder toate ZIP-urile.
  • Aleg File – Open pentru a le dezarhiva. Va rezulta un număr de foldere egal cu numărul de ZIP-uri.
  • Trebuie să merg în fiecare folder, să selectez toate fișierele și să le trag cu mausul într-un folder-destinație.

Dacă am doar 3-4 arhive, nu e foarte greu să fac asta manual. Dar dacă am 20? Sau mai multe? Cum m-ar putea scuti Automator de plimbatul prin N foldere?

Primii pași în Automator

Menționez de la început că voi vorbi despre versiunea de Automator care vine cu Snow Leopard. Lucrurile pot fi mai mult sau mai puțin diferite în Leopard și Tiger, dar principiile de bază rămân aceleași.

Mini-aplicațiile de care vorbeam mai sus sunt denumite în Automator workflow-uri. Un workflow este compus din acțiuni care se succed una după alta și pot chiar interacționa între ele. Dacă deschidem Automator vom vedea că fereastra programului este împărțită în două zone:

2010 02 08 automator 01

  • Partea din stânga conține acțiunile pe care le putem noi folosi.
  • În partea din dreapta vom construi workflow-ul nostru, trăgând acolo cu mausul acțiunile din stânga.

Ce sunt aceste „acțiuni”?

Să vorbim puțin despre acțiuni. Ele sunt mici progrămele care execută o singură operațiune, însoțesc unele dintre aplicațiile pe care le avem pe Mac și se instalează odată cu ele. Ne vom da seama mai bine de lucrul acesta dacă mergem în meniul View și selectăm Arrange Actions by Application. În coloana din stânga vom vedea acțiunile sortate după aplicația-mamă.

2010 02 08 automator 02

Nu toate programele pe care le avem pe Mac oferă accesul la acțiuni. Cum era de așteptat, marea lor majoritate sunt acțiuni ale aplicațiilor Apple. De exemplu Finder ne pune la dispoziție vreo 35 de acțiuni, Mail – 15 acțiuni ș.a.m.d. Aplicația Transmit făcută de cei de la Panic oferă și ea, imediat după instalare, trei acțiuni. Chiar și Microsoft Office aduce o zestre foarte importantă de acțiuni, împărțite între cele patru programe importante ale suitei.

Ce facem dacă vrem să folosim acțiunile unei aplicații pe care nu o găsim în Automator? De exemplu poate vrem să folosim într-un worflow acțiuni care execută taskuri Photoshop. În acest caz singurele soluții sunt:

  • Dacă aplicația este scriptabilă, am putea construi o acțiune folosind AppleScript. Acest lucru presupune, evident, cunoștințe solide de AppleScript.
  • Putem căuta pe internet acțiuni gata făcute. Există pachete de acțiuni pentru Photoshop, Illustrator, Quark XPress, gratuite sau contra cost.

Unele acțiuni își execută pur și simplu operațiunea, fără să ceară alte informații. Altele au nevoie de niște parametri pe care-i dăm noi, prin intermediul unor butoane, meniuri, câmpuri de text configurabile din Automator. În cadrul unui workflow însă, majoritatea acțiunilor pot comunica între ele, prin acceptarea unor parametri primiți de la acțiunea precedentă (la „intrare”), și prin furnizarea altor informații către acțiunea următoare (la „ieșire”).

„Arta” folosirii Automator constă în combinarea logică a acțiunilor, astfel încât prin rularea lor pas cu pas să rezulte un workflow funcțional și util.

Să revenim la exemplul nostru. Cei trei pași enumerați mai sus trebuie traduși în acțiuni executate de Automator. Folosesc ca test trei arhive ZIP în care am pus niște poze.

2010 02 08 automator 03

Pasul 1: Automator, ia te rog fișierele ZIP din folderul ăsta

În primul pas vreau să-i spun lui Automator care e folderul cu ZIP-uri. Am nevoie deci de o acțiune care să mă lase să aleg un folder din Finder, și pentru asta voi folosi acțiunea „Ask for Finder Items”.

2010 02 08 automator 04

Observăm că are câțiva parametri configurabili:

  • Prompt: aici scriu mesajul pe care să mi-l afișeze Automator la executarea acțiunii.
  • Start at: este punctul de plecare în Finder atunci când mi se deschide fereastra în care aleg folderul cu ZIP-uri.
  • Type: tipul selecției făcute de mine, care va fi un folder.

Bun. Acum trebuie să-i zic lui Automator să ia conținutul folderului, adică fișierele ZIP. Voi folosi acțiunea „Get Folder Contents”.

2010 02 08 automator 05

Observați cum se conectează între ele cele două acțiuni? Prima oferă ca informație de ieșire numele unui folder. A doua preia numele folderului, îi citește conținutul, și oferă la ieșire numele tuturor fișierelor și folderelor găsite. În cazul meu, trei ZIP-uri.

Paranteză. Vă veți întreba poate, pe parcursul acestui tutorial, cum de mi-am dat seama ce acțiuni a trebuit să folosesc la fiecare pas? Păi în primul rând am judecat așa: fiindcă trebuie să fac niște operațiuni de deschidere și mutare a unor foldere și fișiere, mi se pare logic să folosesc niște acțiuni specifice Finder. Apoi, am avut la îndemână două lucruri extrem de utile:

  • Câmpul de căutare din partea de sus a panoului din stânga. Dacă știți limba engleză și vreți să aflați – de exemplu – dacă există vreo acțiune care poate muta fișiere, atunci căutați „move” și aflați imediat răspunsul.
  • Descrierea acțiunii, aflată în partea de jos a panoului din stânga. Dacă selectați o acțiune și citiți descrierea ei, vă veți da seama imediat ce face.

Închidem paranteza și mergem mai departe.

Pasul 2: deschide fișierele ZIP

Pentru asta voi folosi acțiunea „Open Finder Items”.

2010 02 08 automator 06

Are un parametru numit „Open with” care mă lasă să aleg cu ce aplicație se vor deschide fișierele. Las „Default Application” pentru a folosi dezarhivatorul din sistem. Evident, acțiunea se conectează cu precedenta, de unde preia numele ZIP-urilor.

Pasul 3: aruncă la coș arhivele ZIP

Acesta e un pas suplimentar pe care m-am gândit să-l adaug în workflow. Nu mai am nevoie de ZIP-uri după dezarhivare, deci ce-ar fi să le dau la coș? Cum fac asta? Cu acțiunea „Move Finder Items to Trash”.

2010 02 08 automator 07

Pasul 4: ia conținutul folderelor rezultate și mută-l în altă parte

Pentru asta ar trebui să folosesc din nou acțiunea „Get Folder Contents”, dar am o problemă. Cum îi spun acum lui Automator în ce foldere trebuie să caute? Mai sus am văzut că acțiunea a preluat informațiile de la cea precedentă, dar acum eu nu mai am cum să fac asta. „Move Finder Items to Trash” nu-mi oferă la ieșire nicio informație pe care aș putea-o folosi. Practic Automator ar trebui acum să se întoarcă în folderul de la început, să caute folderele rezultate în urma arhivării, să le ia conținutul și să-l mute în altă parte. Cum fac să aduc din nou în Automator numele folderului sursa? Folosind o variabilă.

Variabilele sunt niște containere în care putem stoca informații, cu scopul de a le utiliza mai târziu în workflow. Scrierea informațiilor într-o variabilă se face cu acțiunea „Set Value of Variable”, iar citirea cu „Get Value of Variable”. În exemplul nostru, ideea e să folosesc o variabilă pentru a stoca numele folderului inițial, imediat după prima acțiune, pentru a-l avea la dispoziție oricând am nevoie de el.

Mă întorc așadar la prima acțiune și imediat după ea trag din stânga „Set Value of Variable”. Îi dau un nume variabilei, să zicem „folder_sursă”. Această variabilă va conține de acum încolo numele folderului original.

2010 02 08 automator 08

Apoi, imediat după „Move Finder Items to Trash” pun o acțiune „Get Value of Variable” pentru a extrage conținutul variabilei. Acum am la dispoziție folderul original, deci pot reveni la operațiunile cu fișiere.

2010 02 08 automator 09

Va trebui să folosesc „Get Folder Contents” de două ori, pentru a muta numai conținutul celor trei foldere, nu și folderele în sine. Astfel:

  • Prima acțiune îmi selectează conținutul folderului original, adică cele trei foldere.
  • A doua acțiune îmi selectează conținutul celor trei foldere, adică fișierele pe care trebuie să le mut.

2010 02 08 automator 10

Și în final se pare că mai e nevoie de un singur pas: o acțiune care mută fișiere. Nu e greu de găsit, dacă știți limba engleză: se numește „Move Finder Items”, în care pot alege folderul în care să fie mutate fișierele. Sau, dacă vreau ca acțiunea să mă lase să aleg orice folder de fiecare dată când rulez workflow-ul, dau clic pe Options și bifez „Show this action when the workflow runs”. Este o opțiune foarte importantă, care se utilizează atunci când se crează workflow-uri generice care vor fi refolosite.

2010 02 08 automator 11

Dacă veți încerca să recreați acest workflow și să-l rulați, sunt șanse mari ca la pasul în care se execută dezarhivarea fișierelor, să primiți o eroare care vă avertizează că nu au fost găsite arhivele. Mi s-a întâmplat și mie, și într-un final am reușit să găsesc o explicație. Automator trece foarte repede de la dezarhivare la operațiunea de ștergere a arhivelor. Atât de repede, încât programul de dezarhivare nici nu apucă să dezarhiveze toate ZIP-urile, că ele sunt deja în Trash. Pentru a preveni acest lucru, voi introduce un respiro între cele două acțiuni. Folosesc acțiunea „Pause” prin care pun o pauză de câteva secunde secunde în workflow, imediat după acțiunea de deschidere a ZIP-urilor. Suficient cât să-și poată face treaba utilitarul de dezarhivare.

2010 02 08 automator 12

Salvez și testez: de data asta chiar merge!

Nu știu cât de bine am reușit să mă fac înțeles în acest tutorial, dar așa cum spune și titlul, este vorba doar de o introducere în Automator. Dacă veți explora aplicația veți descoperi multe alte lucruri, pe care le voi aduce și eu în discuție în alte articole.