[BYA Tips] Rendiamo “smart” la nostra casella GMail sfruttando Google App Scripts

Oggigiorno utilizziamo il nostro account e-mail per una serie infinita di scopi, spesso lontani dalla semplice ricezione della corrispondenza digitale: newsletter, promozioni, offerte settimanali, promemoria automatici, feed di ogni tipo, e tanto altro ancora. Ed immancabilmente finiamo per conservare tutto….

gmailtipintro

Complice infatti lo spazio di archiviazione “pressoché illimitato” fornito da Google nel suo servizio GMail si fa presto ad accumulare anni di corrispondenza inutile, con informazioni ormai troppo vecchie per poter essere di una qualche utilità.

Basti pensare, ad esempio, a tutte le e-mail promozionali che riceviamo quotidianamente e che non hanno una durata superiore ai 7 giorni: se, come nel caso, ne ricevete una media di 7 al giorno finirete per averne accumulate ben 49 in una settimana e 196 in un mese.

Sommersi dallo sSPAM

Dato il proliferare di questo fenomeno, in gergo tutte queste e-mail hanno ormai una definizione ben precisa: semi-SPAM. Ovvero tutti quei messaggi, che spesso finiamo per non leggere neppure perché ci basta conoscerne l’oggetto, destinati ad accumularsi nella nostra Inbox e che ci impediscono, alle volte, di leggere i messaggi davvero importanti.

Eliminare, Cancellare, Archiviare…

Certo basterebbe “eliminare” di volta in volta i messaggi che non ci interessano o che sono superflui per tenere in ordine la nostra Posta In Arrivo ma con questi ritmi bastano un paio di giorni di disattenzione per ritrovarsi sommersi da un centinaio di e-mail da filtrare.

Se come me avete sperimentato questo problema più di una volta, e soprattutto se siete convinti che debba essere la vostra e-mail a lavorare per voi e non il contrario, allora sono certo che troverete utile questo piccolo TIP.

Sfruttiamo Google Apps Scripts

Una spiegazione omnicomprensiva di Google Apps Scripts esula del tutto lo scopo di questo articolo (e francamente ci sono giá ottimi tutorial in rete 😉 ) per cui mi limiterò a darne una panoramica sommaria.

In breve GAScripts è un ibrido tra un linguaggio di programmazione e una piattaforma di fluid coding che consente all’utente di un prodotto Google di interagire con il medesimo sfruttando API e Script dedicati per estenderne le funzionalità.

Nel nostro caso GAScripts ci consente di fornire istruzioni specifiche al nostro account GMail in modo del tutto automatico e ad intervalli regolari, un po’ come se stessimo impostando un cron job, senza tuttavia doverci preoccupare dell’infrastruttura server alle spalle del sistema.

Google infatti fornisce una piattaforma di web coding con la quale è possibile creare, verificare, salvare ed eseguire i propri script senza la necessità di dover installare alcun software sul proprio computer.

 

Ci tengo a ripetere che si tratta di una descrizione veloce e sommaria di Google Apps Scripts che ha il solo scopo di far capire all’utente il perché utilizziamo questo sistema per gli scopi di questo TIP.

Rendiamo SMART la nostra GMail

Avendo introdotto brevemente GAScripts andiamo ad affrontare ora il vero scopo di questo TIP: cercare di rendere intelligente la nostra casella di posta elettronica, automatizzando una serie di processi di pulizia e classificazione delle e-mail.

I Filtri e le Etichette

La corretta configurazione dei Filtri all’interno della nostra Posta In Arrivo è un requisito fondamentale per il corretto svolgimento di questa guida: tutte le funzioni che andremo a scoprire infatti si basano sul fatto che i nostri messaggi in arrivo siano correttamente filtrati e classificati in base a dei criteri prestabiliti.

gas_filtri

GMail infatti tratta le Etichette dei messaggi come una sorta di “cartelle dinamiche” nelle quale raccoglie e visualizza separatamente tutti i messaggi che condividono la stessa etichetta.

gs_etichette

Il metodo più semplice con il quale potete filtrare i messaggi è per mezzo del mittente: per esempio, potete impostare un filtro che applichi l’etichetta “Offerte Kindle” a tutti i messaggi che provengono da store_news@amazon.it.

Questo è soltanto un esempio naturalmente: ciascuno a seconda dei messaggi che riceve e che intende filtrare può applicare quanti filtri desidera all’interno delle Impostazioni del proprio GMail.

La creazione e l’applicazione dei Filtri per i Messaggi in GMail è un pre-requisito per questa guida: immagino che ciascun utente sappia giá come fare e pertanto non mi dilungo in ulteriori spiegazioni.

Lo Scripting

Potremmo dire che questa sezione è “il cuore” di tutta la nostra guida: vedremo ora come applicare una serie di script che semplifichino le operazioni di gestione della nostra casella e-mail.

Per prima cosa, avendo cura di essere autenticati con l’account di posta elettronica sul quale vogliamo attivare i prossimi script, rechiamoci al seguente indirizzo: http://script.google.com

gas_whitepage

Ci ritroveremo dinnanzi una pagina bianca nella quale andare ad inserire il codice per la funzione che volgiamo implementare.

Nel mio caso lo scopo era di eliminare automaticamente i messaggi promozionali più vecchi, e quindi ormai senza valore, che intasavano la scheda Promozioni: pertanto lo script che andremo ad applicare utilizza una logica del tipo “Se etichetta del messaggio = NNNN e se messaggio più vecchio di X giorni allora Cestina messaggio”.

function ripulisciMail() { // suggerisco di rinominare la funzione in base all’etichetta applicata ai messaggi da eliminare, ad esempio ripulisciPromozioni oppure ripulisciOfferteGlamoo

var delayDays = 2 // Inserire il numero di giorni passati i quali i messaggi verrano spostati nel cestino. (leggi: i messaggi piú vecchi di N giorni vengono eliminati)

var maxDate = new Date();

maxDate.setDate(maxDate.getDate()-delayDays);

var label = GmailApp.getUserLabelByName(“ETICHETTA”); // Inserire l’etichetta dei messaggi da filtrare. Gli apici vanno mantenuti. In caso di etichette nidificate la struttura é “ETICHETTA MADRE/EITCHETTA NIDIFICATA”.

var threads = label.getThreads();

for (var i = 0; i < threads.length; i++) {

if (threads[i].getLastMessageDate()<maxDate)

{

   threads[i].moveToTrash();

}

}

}

Come potete vedere dal codice nel box precedente, ogni riga è dotata del rispettivo commento per permettervi di personalizzare al meglio lo script in base alle vostre esigenze.

I campi da modificare sono i seguenti:

function ripulisciMal: impostate un nome chiaro per la funzione, come ad esempio eliminaKindle, così da identificarla facilmente in seguito.

var delayDays: è il numero di giorni che deve trascorrere prima che lo script prenda in considerazione il messaggio per la pulizia.

var label: qui dovrete inserire, al posto del termine ETICHETTA chiaramente, il nome dell’etichetta che avete assegnato ai messaggi tramite i Filtri discussi in precedenza.

Copiate ed Incollate dunque lo script nella pagina bianca di GAScripts e personalizzatelo secondo le vostre esigenze: una volta terminate le modifiche cliccate sul pulsante Salva in alto a sinistra per memorizzarlo.

gas_salvaprogetto

Prima di andare ad eseguire la funzione appena creata assicuriamoci della sua esattezza utilizzando lo strumento debug: questo passaggio ci consentirà non solo di verificare l’esattezza di quanto scritto ma anche di procedere all’autenticazione di GAScripts per accedere al nostro account GMail.

gas_auth

GAScripts infatti ci chiederá di consentire l’accesso al nostro Account GMail e dovremo selezionare il pulsante “Autorizza” per proseguire.

Questo passaggio verrà proposto soltanto una volta, in occasione della prima configurazione. Non sarà più necessario eseguirlo in futuro.

gas_debug

Se tutto è andato bene il debug della nostra funzione non restituirà alcun errore: viceversa un pop-up nella porzione superiore dello schermo vi indicherà l’esatta posizione dello script nel quale si è verificato l’errore.

Tipicamente l’errore è dovuto ad un errore di trascrizione delle vostre etichette: fate attenzione dunque all’ortografia e all’eventuale presenza di etichette annidate.

Terminato il debug con successo possiamo andare a programmare l’esecuzione delle nostre funzioni, altra caratteristica fondamentale di GAScripts: difatti eseguire manualmente lo script di puilizia sarebbe di ben poca utilità, mentre lasciare che il sistema lo esegua periodicamente ci consente di delegare il lavoro di ripulitura e goderci una casella di posta pulita e organizzata.

gas_trigger_icon

Procediamo quindi selezionando l’icona per impostare i Trigger (pensateli come dei cronjob semplificati) evidenziata nell’immagine precedente.

gas_trigger

Nella finestra che si aprirà dovremo innanzitutto scegliere la funzione che desideriamo pianificare: per questo è essenziale nominare correttamente ogni funzione creata, così da poterla subito ritrovare nel menu a tendina di sinistra.

gas_trigger_giorno

Nella terza colonna a partire da sinistra andremo a selezionare l’intervallo di esecuzione del nostro script: possiamo infatti scegliere di eseguirlo in una data specifica, ad intervalli di tempo definiti (minuti o ore), in giorni prestabiliti, oppure in base alla settimana o al mese.

Nel nostro caso scegliamo di eseguirlo ogni giorno con la voce “timer giorno” e ci spostiamo poi nell’ultima colonna per raffinare le modalità di esecuzione.

gas_trigger_ora

Nell’ultima casella possiamo selezionare l’intervallo esatto di esecuzione del nostro comando: se ad esempio sappiamo che le e-mail da filtrare ci vengono inviate sempre tra le 00:01 e le 01:30 allora possiamo programmare lo script perché venga eseguito tra le 03:00 e le 04:00 così da essere certi di aver ricevuto anche le nuove e-mail.

gas_notifiche_trigger

Per essere sicuri che tutto si svolga correttamente possiamo infine cliccare sulla voce “notifichee attivare l’invio di una e-mail di notifica al nostro indirizzo e-mail qualora lo script dovesse incontrare degli errori.

Questa funzione ci è particolarmente utile in quanto ci consente di sapere subito se qualcosa è andato storto e se di conseguenza la nostra casella di posta elettronica non è più mantenuta in ordine.

La configurazione delle notifiche è del tutto identica a quella descritta in precedenza: terminata l’impostazione clicchiamo sul pulsante “Ok” e successivamente su “Salva” per memorizzare le impostazioni.

Ready To Go!

Arrivati a questo punto il vostro script è configurato correttamente per perdersi cura automaticamente delle vostre e-mail nell’intervallo di tempo predefinito! Non dovrete far altro che sedervi, rilassarvi, e godervi una casella e-mail sempre organizzata e senza sSPAM!

Funzioni Aggiuntive

Tuttavia poiché credo che, come me, pochi dei lettori interessati a questo escamotage abbiano un solo tipo di messaggi da filtrare andiamo a vedere come operare più funzioni contemporaneamente.

I meccanismi di impostazione, programmazione e salvataggio restano gli stessi descritti in precedenza: non c’è bisogno di creare un nuovo file GASCripts infatti per monitorare più etichette!

Bisogna tuttavia cambiare il tipo di script che andremo ad utilizzare: quello discusso in precedenza è perfetto per una singola etichetta e per un numero contenuto di messaggi da analizzare.

Se abbiamo due o tre etichette da filtrare che non contengono più di 100 messaggi ciascuna possiamo semplicemente replicare la funzione appena descritta, avendo cura di cambiarne il nome naturalmente, per ottenere qualcosa di simile a questo:

function ripulisciKindle() {

var delayDays = 2

var maxDate = new Date();

maxDate.setDate(maxDate.getDate()-delayDays);

var label = GmailApp.getUserLabelByName(“Kindle”);

var threads = label.getThreads();

for (var i = 0; i < threads.length; i++) {

if (threads[i].getLastMessageDate()<maxDate)

{

   threads[i].moveToTrash();

}

}

}

 

function ripulisciIKEA() {

var delayDays = 7

var maxDate = new Date();

maxDate.setDate(maxDate.getDate()-delayDays);

var label = GmailApp.getUserLabelByName(“IKEA”);

var threads = label.getThreads();

for (var i = 0; i < threads.length; i++) {

if (threads[i].getLastMessageDate()<maxDate)

{

   threads[i].moveToTrash();

}

}

}

Ciascuna funzione puó avere un valore di delayDays differente per meglio accomodare le esigenze specifiche di ciascuna tipologia di messaggi da filtrare.

Tuttavia GAScripts pone delle limitazioni in termini di trigger impostabili e di tempi di esecuzione dei singoli script: se abbiamo etichette da filtrare che contengono piú di 100 messaggi allora dovremo utilizzare una funzione differente.

function ripulisciMailBatch() {

var batchSize = 100 // Inserire il numero di messaggi che si vuole vengano processati ad ogni iterazione dello script. Suggerisco di lasciare il valore inalterato.

var threads = GmailApp.search(‘label:”ETICHETTA” older_than:Nd’); // Inserire l’etichetta dei messaggi da filtrare. Sostituire alla lettera N il valore numerico dei giorni passati i quali i messaggi saranno eliminati.

for (j = 0; j < threads.length; j+=batchSize) {

   GmailApp.moveThreadsToTrash(threads.slice(j, j+batchSize));

}

}

Questa funzione ci consentirà di non incorrere nell’errore “tempo di esecuzione terminato”: ma se abbiamo davvero molte etichette da filtrare e non vogliamo incorrere nella limitazione del numero di trigger impostabili dobbiamo utilizzare una versione leggermente differente di questo script.

function multipleLabels() {

var myLabels = {‘”etichetta 1″‘: “Nd”, ‘”etichetta 2″‘: “Nd”}; // Inserire l’etichetta dei messaggi da filtrare. Sostituire alla lettera N il valore numerico dei giorni passati i quali i messaggi saranno eliminati.

var batchSize = 100; // Eseguendo lo script su un batch di 100 messaggi alla volta si evita di incorrere nell’errore “tempo di risposta esaurito” da parte del server.

for(aLabel in myLabels)

{

   var threads = GmailApp.search(‘label:’+aLabel+’ older_than:’+myLabels[aLabel]+”);

   for (j = 0; j < threads.length; j+=batchSize) {

     GmailApp.moveThreadsToTrash(threads.slice(j, j+batchSize));

   }

}

}

Con questo script possiamo impostare non solo etichette multiple da controllare ma per ciascuna di esse possiamo specificare il limite di tempo oltre il quale selezionare i rispettivi messaggi per l’eliminazione, il tutto sfruttando un’unica funzione che analizza batch non superiori ai 100 messaggi.

In questo modo potremo raggruppare 50-100 etichette in una sola funzione, sfruttando così un solo slot trigger, e mantenendo un codice più pulito ed elegante.

Considerazioni Finali

Quasi certamente vi starete chiedendo il perché della funzione moveThreadsToTrash anziché qualcosa del tipo deleteThreads.

Il motivo è semplice: Google non permette l’eliminazione diretta dei messaggi tramite Scripts!

In effetti l’eliminazione diretta non è possibile neppure tramite l’interfaccia tradizionale di Gmail: tutti i messaggi da eliminare devono passare prima dal cestino, e non è possibile invocare lo svuotamento del cestino tramite script.

Tuttavia il cestino viene svuotato automaticamente ogni 30 giorni, o se lo desiderate con la pressione di un semplice pulsante, semplificando di molto le operazioni di pulizia della vostra casella di posta elettronica.

Se invece avete la necessità di eliminare tutti i messaggi inviati questo script vi consentirà di farlo automaticamente.

Infine per i più esigenti questo script consente di archiviare automaticamente i messaggi in Posta In Arrivo che siano più vecchi di 2 mesi e non presentino l’apposita etichetta “non archiviare”.

Spero che le informazioni contenute in questo articolo vi siano di aiuto per “rendere più intelligente” la vostra casella di posta elettronica: se doveste incontrare dei problemi, e siete sicuri di aver letto e compreso tutta la guida 😉 , allora non esitate a scriverci nei commenti o sul Forum dove cercheremo di fare del nostro meglio per aiutarvi.

 

Qui potete trovare un pratico riepilogo di tutti gli script trattati nell’articolo


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.