20/09/13

Rimandare la lettura di una mail/2

Continuiamo la serie di articoli, per tutti, incentrati sugli Apps Script. Nel caso arriviate solo adesso vi consiglio di dare almeno un'occhiata all'introduzione all'argomento.

Oggi andremo ad implementare un'ottimizzazione per il meccanismo proposto nell'articolo precedente. Come avevo fatto notare infatti la soluzione proposta aveva il difetto che tutti i post filtrati venivano recuperati solo una volta al giorno. Questo faceva si che anche se avessimo impostato il trigger tra le 21 e le 22 tutti i messaggi ricevuti dalle 22 in avanti sarebbero rimasti nascosti fino al giorno successivo, a prescindere dalla nostra disponibilità a leggerli subito.

Per ovviare a questo servirebbe che lo script venisse periodicamente eseguito durante tutto il periodo di disponibilità. Purtroppo non è possibile abilitare/disabilitare un filtro di Gmail tramite Apps Script quindi la soluzione più semplice che mi è venuta in mente mi aiuterà a mostrare come poter impostare programmaticamente un trigger.

In maniera abbastanza banale rimuoveremo il trigger creato precedentemente, creeremo due nuove funzioni che si occuperanno di create e rimuove un trigger che verrà eseguito ogni minuto il quale lancerà effettivamente la funzione originaria per il recupero delle mail. Non ci occuperemo solo di definire l'orario di esecuzione delle sue nuove funzioni che saranno l'inizio e la fine del nostro periodo di disponibilità.

Il codice aggiornato sarà questo

Si nota l'aggiunta delle due funzioni startAvailability e stopAvailability che si occupano reciprocamente di creare un trigger per eseguire (ogni 5 minuti) la funzione che recupera le mail e per rimuovere questo trigger.
Di fatto la funzione di rimozione potrebbe essere snellita se alla creazione del trigger venisse salvato il riferimento in modo da aver modo di puntare al trigger corretto da rimuovere. Personalmente preferisco questa versione perchè gestisce anche eventuali duplicazioni date da errori.

L'unica cosa che rimane da fare è modificare i trigger
in modo che appaiano così
Ovviamente dovrete avere l'accortezza di impostare i vostri orari di disponibilità, non i miei.
Inoltre potete impostare più fasce definendo altre coppie di trigger ...
Da notare che anche se il trigger riporta una fascia di un'ora la funzione verrà richiamata una volta sola. Google specifica che i trigger non sono da considerarsi puntuali ma hanno un certo margine di tolleranza. In realtà mi è capitato raramente di sperimentare dei ritardi nell'esecuzione ma per sicurezza non usateli per pianificare l'assunzione delle vostre medicine ;)

Il filtro rimane quello definito nel precedente articolo (ovviamente potete espanderlo quando volete) quindi in poco tempo siamo riusciti a ottimizzare ulteriormente questa funzionalità aggiuntiva.

Come sempre sono disponibile a rispondere alle vostre domande e desideroso di ricevere il vostro feedback. Vi sembro troppo tecnico o poco interessante ? Dite pure la vostra ;)

Nessun commento:

Posta un commento