Recensione: come usare Hazel per la catalogazione di documenti, fatture e bollette

Leggi questo articolo grazie alle donazioni di Danilo Ronchi, Maurizio Montanaro, Giuseppe Sorce, Daniele Dimiccoli, Michele Landolfo, Paolo Bulgarelli, Mustek Band.
♥ Partecipa anche tu alle donazioni: sostieni SaggiaMente, sostieni le tue passioni!

Quando mi chiedono perché preferisco macOS ho un po' di difficoltà a rispondere, specialmente se ho di fronte un utente che non ha grosse pretese. Diventa decisamente più facile con gli esperti, con i tecnici informatici, con le persone che hanno una naturale predilezione per tutto ciò che è "smart". La cosa che preferisco di più del sistema operativo di Apple è che ti mette in condizione di pensare che ogni cosa è possibile. Di certo la sua base Unix aiuta ma anche tutto l'ambiente grafico e i tool di sviluppo sembrano pensati per essere flessibili, per adattarsi alle esigenze dell'operatore. Ricordo che una delle cose che più mi colpii di più su Tiger (il primo Mac OS X che ho usato dopo il Classic) fu Automator: Apple fornisce di serie nei suoi computer un software che permetteva di creare script, servizi e persino piccole app senza sapere nulla di programmazione, semplicemente con il drag&drop di alcuni componenti. Questa filosofia è permeata anche negli ambienti di sviluppo orientati al mondo Mac ed è per questo che le applicazioni "smart" che troviamo su macOS non esistono su Windows. Per alcune di esse potreste riuscire a trovare delle pallide imitazioni, ma vi sognate un Alfred, un Keyboard Maestro, un Tweetbot e poi Reeder, Coda, Transmit, Ulysses, Audio Hijack... sono solo alcune che mi vengono in mente e a cui aggiungo volentieri anche Hazel.

Segnalatami diverse volte dall'amico Luca di EasyApple, l'ho acquistata in un momento che ormai neanche ricordo grazie ad un'offerta temporanea, ma ho tardato diversi mesi prima di decidermi ad installarla e metterla in funzione. Hazel fa parte della categoria tool e come ogni "attrezzo" deve essere capito prima di essere usato. Di base si occupa di monitorare delle cartelle di nostra scelta, andando ad eseguire una serie di operazioni sui nuovi file che vengono individuati. Detta così potrebbe sembrare la cosa più inutile del mondo ed in effetti non esiste un sistema univoco per determinare l'utilità di questo software. Potreste benissimo non averne bisogno come potrebbe risultarvi fondamentale, vediamo di scoprire insieme in quale casistica rientrate con un esempio.

Hazel è uno strumento che deve essere compreso prima di poter essere sfruttato

Questa non è una recensione tipica ma una specie di iniziazione, un qualcosa che, mi auguro, possa servire ai più per capire effettivamente come si usa e cosa può fare Hazel. Perché il punto è proprio questo: finché non si afferrano i principi base del suo funzionamento, si può davvero faticare a capire in cosa potrebbe risultarci utile. Le esigenze possono essere completamente diverse e abbracciare la sfera personale come quella professionale, ma l'esempio che ritengo potenzialmente più comprensibile per tutti può essere quello dei file scaricati dalle email o tramite il browser. Ormai tutta la documentazione, le fatture, le bollette sono di natura digitale in PDF e transitano dalla cartella Download. Finché sono meno di dieci in un mese è abbastanza facile stargli dietro ma quando iniziano a diventare numerosi si può fare confusione. Il mio metodo per la catalogazione è il seguente:

  1. Scarico un documento in Download
  2. Lo rinomino seguendo un pattern specifico: "YYYY-MM-DD Servizio/Prodotto.pdf"
  3. Lo sposto nella sua specifica cartella: se è un documento personale è catalogato per area (luce/gas/telefono/ecc.) se è di competenza aziendale per data, ma finisce prima in una posizione temporanea poiché questi documenti li archivio definitivamente solo dopo averli inoltrati al commercialista (operazione che eseguo ogni 15 del mese)

Ogni mese devo organizzare svariate decine di documenti e fatture...

Giusto per dare un'idea dell'ordine di grandezza di cui parliamo, gestisco una media di 70 fatture di spesa ogni mese per l'azienda, più altre 10/15 personali. Ecco perché il giorno in cui dovevo mettermi a rinominare e catalogare il tutto era piuttosto noioso. Al mondo esistono due tipi di persone: quelle che non disdegnano i lavori ripetitivi e quelle che creano un'automazione che li faccia al posto loro. La cosa bella è che con Hazel non sarà necessario programmare neanche una riga di codice e chiunque potrà sfruttare le sue regole per snellire la catalogazione dei documenti.

Prima di passare all'esempio concreto sono necessarie due avvertenze. La prima è che il metodo di catalogazione qui proposto è il mio personale e può non rispecchiare i gusti e le necessità del lettore: prendetelo solo come esempio e procedete per la vostra strada. La seconda riguarda Hazel nella sua interezza: per dimostrarne l'efficacia parleremo di una singola applicazione concreta ma non dimenticate che può essere usato per qualsiasi tipo di esigenza. Una volta capite le potenzialità sta a voi piegarle alle vostre esigenze.

Hazel è tutt'altro che affascinante: la sua piccola finestrella risiede nelle preferenze di sistema e si presenta in una forma così dimessa che fa passare la voglia di andare a scoprirne le funzionalità. Nel pannello "Info" si trovano le impostazioni di avvio, aggiornamento e licenza, mentre in "Trash" c'è la possibilità di automatizzare alcune funzioni per il cestino, come la cancellazione dopo tot giorni (che ormai è presente nativamente su macOS) o il mantenimento al di sotto di una soglia massima di occupazione. Insomma, cose che onestamente non uso e che possiamo metterci alle spalle per passare all'area operativa: "Folders".

Sulla sinistra si trovano la cartelle monitorate, che in ogni momento possono essere eliminate o aggiunte tramite i pulsanti in basso. Interessante segnalare la possibilità di importare ed esportare le regole (Rules) ed anche la sincronizzazione su una cartella di nostra scelta, ideale per l'uso con Dropbox ad esempio. Infine si può mettere in "pausa" tutto un set di regole in qualsiasi momento, oppure anche singolarmente.

Creiamo una regola

Questa mattina ho notato che Amazon ha iniziato a modificare le sue fatture e mi è sembrata una buona occasione per ricreare insieme una regola adatta. Iniziamo andando ad aggiungere una nuova regola premendo sul pulsante [+] all'interno della cartella Download e dandogli un nome, ad esempio "Fatture Amazon 2018".

La maschera con cui Hazel ci permette di definire una nuova regola è divisa sostanzialmente in due parti: quella in cui si stabiliscono le condizioni per identificare il file su cui agire (arancione) e quella dove si determinano le azioni da compiere (in blu). Iniziamo dunque a fargli capire come trovare le fatture di Amazon. Sappiamo che sono dei PDF e che solitamente si chiamano "Invoice", ma se ne scarichiamo due o più verranno numerati da macOS come "Invoice-2" ecc.. per cui le prime due condizioni potrebbero essere basate sull'estensione (pdf) e sul nome (che deve contenere Invoice).

Prima di proseguire conviene aprire il documento per iniziare ad osservarlo. All'interno di questo troverete senza dubbio degli ulteriori elementi che possono identificarlo in modo univoco, ad esempio la presenza della parola Amazon. Aggiungiamo una nuova condizione di tipo "contents" con verifica "contain" e poi scriviamo appunto "Amazon". A questo punto vi consiglio un trucchetto che si rivelerà fondamentale: all'interno dalla finestrella della regola trovate il pulsante [Preview], cliccatelo e selezionate dal Finder uno dei documenti tipo su cui state lavorando (es. Invoice.pdf). Essendo un'anteprima non eseguirà nessuna operazione ma vedrete apparire dei segni di spunta in corrispondenza di ogni condizione e dovrebbero essere tutti verdi, cioè confermati. Cliccate su quello che appare a destra della condizione "content" appena creata e poi sui tre puntini, si aprirà un'area di testo in cui dovete selezionare tutto (⌘A) e copiare (⌘C).

Aprite un editor di testo come TextEdit (vi consiglio questo e vi avviso che con alcuni editor di codice evoluti come Atom.io perderete degli spazi e impazzirete a capire cosa non funziona), ed incollate (⌘V) tutto il contenuto. Questo che vedete rappresenta ciò che Hazel "legge" all'interno del PDF indicato ed è fondamentale da avere in quanto la formattazione, le caselle di testo e le tabelle, possono esteticamente apparirci in un punto ma poi essere interpretate in una sequenza completamente diversa appena il software va ad estrapolarne il solo testo in forma lineare. Troviamo qui le informazioni di nostro interesse, nel mio caso la data fattura e la descrizione del prodotto. La prima delle due appare visivamente nel file PDF proprio a destra di "Data di fatturazione", per cui potrebbe sembrare questo il metodo per agganciarla eppure se si provasse non funzionerebbe mai. La spiegazione di ciò si trova nel testo ripulito che abbiamo opportunamente estrapolato, poiché andando a leggerlo si noterà che la sequenza con cui i testi sono effettivamente letti è ben diversa:

Per domande relative al tuo ordine, ti preghiamo di visitare il sito www.amazon.it/contact-us
Data di fatturazione Numero fattura Totale da pagare
26 giugno 2018 AEU-INV-IT-2018-XXXXXX € 15,89
Indirizzo di fatturazione

Sulla base di questa nuova informazione aggiungiamo una condizione di tipo "Contents" / "contain match". Questa tipologia è quella più importante poiché non solo ci permette di definire se il file corrisponde effettivamente ai criteri desiderati ma offre la possibilità di estrapolare da questo delle informazioni. Ora seguitemi bene perché questo è il punto che vi permetterà di fare qualsiasi cosa una volta capito e metabolizzato.

Estrapolare una variabile

Copiate dal documento di testo ripulito una porzione in cui vi sia il dato di interesse (nel nostro caso la data) e poi un numero sufficiente di caratteri precedenti e successivi per identificare in modo univoco il posto in cui si trova. Aggiungo ulteriori dettagli: la data in questione è "26 giugno 2018" che si trova ad inizio di una riga la cui precedente termina con una e (di "Totale da pagare"), mentre dopo c'è uno spazio e il codice del numero d'ordine (che è una variabile). Non c'è una regola fissa per determinare cosa sia sufficiente a localizzare il contenuto ma il punto è che per estrarre una variabile serve sapere con certezza che prima o dopo vi siano degli elementi statici o almeno "prevedibili" in base ad alcuni criteri (ad esempio quantità di lettere o numeri). In generale il mio consiglio è di iniziare concentrandosi su tre righe del documento di testo ripulito: quella che contiene il dato e le due che si trovano prima e dopo. Nel caso in questione ho deciso di iniziare a copiare dalle etichette "Data di fatturazione Numero fattura Totale da pagare" (che si trovano tutte in fila) fino al punto successivo in cui c'è la data.

Si può facilmente creare anche una maschera di interpretazione per il numero d'ordine che si trova dopo (perché il pattern è ricorrente) ma è del tutto inutile complicarsi la vita visto che la riga precedente così configurata si presenta una sola volta nella fattura e sappiamo quali e quanti caratteri ci servono dopo (ovvero la data). Ora arriva il bello: cancelliamo solo la data e al suo posto trasciniamo il componente "Custom Date", identificato da un cerchietto vuoto. Diamo un nome alla variabile (io uso sempre data_fattura) e lasciamo pure il rilevamento automatico del formato data. In realtà io tendo a specificare gli elementi manualmente per evitare possibili confusioni con mese e giorno avendo documenti sia italiani che stranieri, ma con le date con il mese in lettere come questa ("giugno") funziona meglio il sistema automatico.

Se avete ancora la modalità "Preview" attiva dovreste vedere apparire il segno di spunta verde in corrispondenza della nuova condizione e se ci premete sopra potrete controllare che abbia identificato in modo corretto la data. Ma cosa ce ne facciamo di questa informazione? Come ho già detto, io utilizzo e consiglio da sempre di inserire prima di ogni file o cartella che faccia parte di un archivio la data in formato ISO, ovvero YYYY-MM-DD (es: 2018-07-13). Ovviamente non ha senso farlo sempre, questo sistema è però fondamentale per quei contenuti che spesso si navigano a vista nel Finder, poiché ci consente di mantenere un ordine cronologico. Ecco perché nell'area con le azioni andremo a sostituire la riga predefinita "Move" con una "Rename" e nell'area "with pattern:" specificheremo prima di tutto proprio la variabile "data_fattura" (da sostituire con la precedente "name").

A me piace avere anche una anteprima del prodotto cui la fattura si riferisce direttamente dal nome del file, vediamo se riusciamo a farlo anche con questo nuovo formato di fattura. Ripartiamo dunque dal solito testo ripulito e cerchiamo la riga con la descrizione del prodotto. Nel mio caso ecco la porzione interessata riportando anche un po' di contenuto limitrofo:

Fattura Numero fattura AEU-INV-IT-2018-2718123
   APC Surge Arrest Essential - Presa Filtrata - PM5-IT - 5 uscite
Schuko/Italiane - Politica di protezione dell'apparato fino a 50.000 € 1 € 13,02 22% € 15,89 € 15,89 ASIN: B010RXXVAA
            22% € 13,02 € 2,87
   LU-BIO-04
Amazon EU S.à r.l. - 5 Rue Plaetis, L-2338 Lussemburgo, Granducato di Lussemburgo

A vederla così sembra davvero complicato estrapolare il contenuto. Creiamo una seconda condizione di tipo "Contents" / "contain match" ed incolliamo all'interno il testo che inizia con Fattura Numero e prosegue fino ad includere tutta la descrizione prodotto e si ferma al primo simbolo dell'Euro (incluso). Anzi, in questo caso particolare al secondo, poiché il primo fa ancora parte della descrizione prodotto (che termina con "50.000 €"). Ora iniziamo a dare un senso alla regola astraendo la parte in cui è presente il numero di fattura. Selezioniamolo ed eliminiamolo, inserendo in quel punto un segnaposto di tipo "Characters". Questo continuerà ad estendersi nel rilevamento finché troverà lettere, numeri e simboli e si interromperà per il ritorno a capo. La riga successiva contiene il nome prodotto ma inizia con tre spazi, non dimenticate di lasciarli dove sono. A questo punto parte finalmente la descrizione, che andremo a memorizzare in una variabile grazie all'elemento "Custom Text", identificato da un cerchietto pieno. Diamogli un nome, ad esempio "descrizione" e poi definiamo cosa deve "estrapolare". Anche in questo caso non c'è una regola precisa da seguire, potete provare diverse combinazioni e scegliere ciò che trovate più efficiente, io ho deciso di lasciare nella variabile "descrizione" il segnaposto "Anything", ossia qualsiasi cosa, ma di interrompere il riconoscimento alla presenza del primo simbolo inserendolo come identificativo di fine variabile preceduto da uno spazio (guardate il cerchietto).

Ho trovato pratica questa soluzione perché la presenza di un carattere diverso da testo, numeri e spazi permetterà molto spesso di abbreviare la descrizione (altrimenti il nome file diventa enorme), ma se non ce ne fossero il primo simbolo sarà quello dell'Euro (€) che quindi farà terminare la variabile comunque al punto giusto. Non è una logica ferrea, siete liberi di migliorarla secondo le vostre esigenze ed è possibile che anche io la cambierò in futuro dopo un po' di rodaggio, per ora l'ho testata su una decina di fatture e il risultato mi soddisfa pienamente. Nel caso in questione sarà il trattino ad interrompere la descrizione e possiamo vedere in anteprima quale sarà il risultato:

Concludiamo il tutto andando ad aggiungere la variabile descrizione nel campo "Rename" dopo la "data_fattura" ed uno spazio. Infine spostiamo il documento nella cartella dove vogliamo archiviarlo, aggiungendo un'azione "Move". Ecco come dovrebbe apparire il tutto prima della conferma.

Ultimo passaggio importante: selezionate la variabile "data_fattura" nell'azione di rinomina ed impostate il suo formato su YYYY-MM-DD. A questo punto si può provare il risultato, scaricando una fattura di Amazon nella cartella download. Dopo pochi istanti vedrete apparire una notifica di Hazel che mostra anche il nuovo nome del file, che nel caso d'esempio è "2018-06-26 APC Surge Arrest Essential.pdf".

Ogni volta che vedo un popup di Hazel è una soddisfazione
Voto 4,5/5

Conclusione

Hazel ha una infinità di opzioni in più ma ho trovato molto più utile guidarvi dettagliatamente attraverso una applicazione concreta piuttosto che descrivere tutte le possibilità offerte dal software. Considerate questa recensione come il vostro Hello world! e poi divertitevi ad esplorare tutte le possibilità. Potete anche usare questa pagina per condividere le vostre regole migliori nei commenti se ritenute di pubblico interesse, perché qui calza veramente a pennello la frase "l'unico limite è la fantasia". Una volta capiti i meccanismi di base si creano regole in pochissimi minuti e queste vi faranno risparmiare tanta fatica ma soprattutto vi daranno la soddisfazione di far fare al computer il lavoro manuale al vostro posto e di godervi il risultato. Una licenza di Hazel costa $32 e non sono pochi, soprattutto se non sapete ancora quanto possa esservi utile. Di certo potete provare la trial per iniziare e se doveste prenderci gusto decidere di acquistarla in seguito. Personalmente mi fa risparmiare così tanta noia nel fare operazioni manuali di questo tipo che reputo la spesa assolutamente consigliabile!

Maurizio Natali

Titolare e caporedattore di SaggiaMente, è "in rete" da quando ancora non c'era, con un BBS nell'era dei dinosauri informatici. Nel 2009 ha creato questo sito nel tempo libero, ma ora richiede più tempo di quanto ne abbia da offrire. Profondo sostenitore delle giornate di 36 ore, influencer di sé stesso e guru nella pausa pranzo, da anni si abbronza solo con la luce del monitor. Fotografo e videografo per lavoro e passione, seguimi su Instagram