Automazione in soccorso
Questo articolo interesserà a poche persone ma mostra le incredibili capacità di Hazel una di quelle applicazioni che ormai uso in modo trasparente, non mi accorgo della sua presenza, ma che è indispensabile per il mio flusso di lavoro digitale.
Nel caso specifico ho creato un’automazione per l’amico Lucio Bragagnolo che aveva un problema decisamente verticale.
In questo breve articolo non è mia intenzione spiegare in dettaglio l’automazione ma cosa si può fare ed i vantaggi di una applicazione come Hazel in congiunzione con AppleScript. In particolare voglio spiegare (a mia futura memoria e di chi ne potrà eventualmente usufruire) di come passare le variabili catturate da Hazel ad un AppleScript.
1. AppleScript: la colla di macOS che pochi conoscono o vogliono conoscere
Quando parlo di AppleScript perdo buona parte delle persone che mi ascolta … ed io stesso una volta ero così.
Devo tuttavia dire che, seppure rimane un linguaggio di programmazione sui generis, nell’ecosistema di macOS è una colla che ti permette di attaccare applicazioni differenti e di fare “magie”.
1.1 Chi cerca … trova
Non sono minimamente un programmatore ma, col tempo ed in particolare grazie agli insegnamenti ricevuti nel corso di Coding for Lawyer della Statale di Milano (un grazie al Prof. Ziccardi e Perri), ho imparato quanto basta a leggere e comprendere il codice, non per scriverlo, ma per “rubarlo” da altri e piegarlo alle mie necessità.
Grazie a qualche ricerca mirata (ovviamente in lingua inglese) ho trovato una serie di script per fare quel che volevo.
In particolare Lucio voleva anteporre una specifica intestazione YAML al testo semplice di una piuttosto corposa serie di file.
Ho quindi prima trovato uno script che mi permetteva di anteporre il testo che volevo e poi un comando per convertire la data standard che interpreta Applescript in formato ISO.
2. Hazel
Quando ho letto l’articolo di Lucio ho subito capito che Hazel poteva risolvere molti dei suoi problemi.
Infatti il suo problema era evidentemente risolvibile con una espressione regolare o regex da applicare ad una notevole mole di documenti. Creare ed usare una regex tuttavia non è per tutti. Una delle caratteristiche più interessanti di Hazel è quella di rendere relativamente semplice applicare regex a dei documenti.
Grazie alle sue capacità di ricercare modelli (nel nome dei file così come all’interno di documenti compatibili: file di testo, PDF e fogli di calcolo, in particolare) Hazel permette una flessibilità e potenza che pochi altri strumenti offrono (attraverso una interfaccia grafica e non di programmazione).
Da tempo in particolare uso queste funzioni per le mie necessità quotidiane: una delle automazioni più complesse che ho creato è stata quella che mi archivia in automatico i file EML all’interno della specifica sotto cartella di una pratica ma anche quella su come archiviare e rinominare i MAV con la data di scadenza degli stessi credo dimostri le sue capacità con i PDF.
L’ho già spiegato altrove e quindi non mi ripeto ma grazie alla parametro “matches” è possibile comporre delle espressioni regolari nelle ricerche di Hazel.
Nel caso specifico ho composto 2 regole di ricerca dei modelli.
2.1 3 lettere iniziali
La regola che si vede qui sotto va a cercare 3 lettere consecutive all’inizio del nome del documento.
Mi è bastato inserire 3 volte la regex che cattura una lettera, come mostrato nell’immagine sottostante.
2.2 Titolo dell’articolo da modificare
Era poi necessario catturare anche il titolo dell’articolo per inserirlo all’interno del testo del documento in un frontespizio YAML.
In questo caso ho semplicemente detto ad Hazel di catturare tutto il testo successivo alle 3 lettere ed ad uno spazio.
3. Passare i dati catturati allo script
Ma ho scritto questo articolo per uno specifico motivo: documentare come è possibile passare i dati catturati da Hazel all’Applescript.
3.1 Rinomina e modifica del testo catturato
Fatto le catture del testo con i modelli indicato ho potuto manipolare facilmente il nome del documento come voleva Lucio.
In primis ho anteposto la data di creazione del documento. Con Hazel è infatti facilissimo sia inserire il parametro catturato mentre esamina il singolo file e formattare la data nel modo più appropriato nel caso di Lucio: ANNO-MESE-GIORNO in numeri.
Una volta fatto questo ho potuto usare il testo catturato con il secondo modello ed apportagli delle modifiche (in particolare mettere un trattino al posto degli spazi, come si vede nell’immagine sottostante).
3.2 Passare dei parametri all’AppleScript lanciato da Hazel
Arriviamo quindi alla parte più interessante del tutto: come passare alcuni dei parametri catturati da Hazel nelle fasi precedenti all’AppleScript che modifica il contenuto del documento.
Il sistema è relativamente semplice (una volta che si sa cosa cercare).
Come mostrato nell’immagine sottostante, è possibile indicare quali attributi passare allo script: in particolare io ho scelto il nome dell’articolo precedentemente catturato con la funzione matches e la data di creazione del documento.
La particolarità è che Hazel inserisce questi attributi in una variabile denominata inputAttributes
(attributi degli input) che è nel formato lista ovvero una variabile che contiene una lista di oggetti (nel nostro caso 2: il nome dell’articolo e la data di creazione).
Per inserire nell’AppleScript questi 2 dati ho dovuto creare due variabili (titoloPost e dataPost) a cui ho attribuito il primo valore della lista degli attributi item 1 of inputAttributes
ed il secondo rispettivamente.
Per il resto, una volta che ho recuperato la data di creazione del post, mi sono dovuto ingegnare a convertire dal formato di AppleScript a quello ISO per il resto ho commentato il codice dell’AppleScript e credo sia relativamente semplice (ho aggiunto anche i riferimenti alle pagine web degli script che ho “rubato”)
Ultima considerazione: come si vede dall’immagine soprastante, ho progressivamente raffinato la regola di Hazel (il risultato finale è la versione 3) testando la regola su un piccolo sottoinsieme di file che Lucio mi ha girato.
Questo approccio mi ha permesso di raffinare e testare velocemente le regole senza perdere troppo tempo.
In conclusione
Il vantaggio di lavorare con file di testo semplice è la (relativa) facilità di automatizzare la modifica e manipolazione di grosse quantità di questa tipologia di documenti.
Spero di averti fatto intravedere la “potenza” di un programma come Hazel e del perché programmi simili (presenti solo su macOS) rendano più semplice la gestione dei documenti digitali anche a chi non è un programmatore. Come sempre se ti è piaciuto quel che hai letto e non l’hai già fatto ti suggerisco di iscriverti alla mia newsletter. Ti avvertirò dei nuovi articoli che pubblico (oltre ai podcast e video su YouTube) ed una volta al mese ti segnalerò articoli che ho raccolto nel corso del mese ed ho ritenuto interessanti.