08/10/13

Eventi e Trigger per gli Apps Script

In questo nuovo articolo sui Google Apps Script volevo approfondire un argomento che ho già accennato negli episodi precedenti: i trigger ovvero gli strumenti che ci consentono di automatizzare l'esecuzione dei nostri script

Ho già avuto modo di farvi creare dei trigger e di mostrarvi del codice che li gestisce in maniera programmatica ma quello era giusto per incuriosirvi e darvi subito del materiale interessante. Le possibilità a nostra disposizione sono molte di più ;)

Uno dei punti di forza dei GAS è il fatto che non dobbiamo per forza eseguirli manualmente ma abbiamo la possibilità di associare l'esecuzione a determinati eventi oppure in determinati momenti (come abbiamo già sperimentato). I trigger ci danno la possibilità di eseguire una determinata funzione al verificarsi di una determinata condizione.

In questo modo possiamo, ad esempio:
  • creare un menù all'apertura di un documento
  • controllare i dati inviati da un form
  • controllare ogni giorno che non siano rimaste mail importanti senza risposta
La lista completa degli eventi è questa:
  • allo scoccare di un'ora
  • installazione di uno script
  • apertura di un foglio di calcolo
  • cambiamento nel foglio di calcolo
  • modifica nel foglio di calcolo (simile a quello di prima ma diverso)
  • invio dei dati da un form a un foglio di calcolo
  • apertura dell'editor dei form
  • invio dei dati da un form
  • apertura di un documento
Tramite i trigger per ognuno di questi eventi possiamo associare un'azione diversa nel nostro script. Alla funzione così chiamata verrà passato un parametro specifico con dati inerenti. Ad esempio nel caso di un evento a tempo il parametro indicherà il momento in cui è pianificato mentre all'apertura di un foglio di calcolo il parametro riporterà un riferimento al foglio di calcolo stesso. Bisogna comunque tener presente che non tutti gli eventi sono disponibili per tutti gli script., ovviamente non ha senso pensare a un evento di invio dati da un form se non si ha un form ...

I trigger si dividono in due gruppi: quelli semplici e quelli installabili. Tra i due tipi ci sono molte similitudini ma diverse differenze sostanziali.

I trigger semplici possono esistere solo in script creati all'interno di altri documenti (torneremo in seguito a esaminare i vari tipi di script) e sono funzioni con nomi speciali. Per fare un esempio posso creare una funzione onEdit (attenzione a maiuscole e minuscole, javascript ci tiene molto) in uno script creato in un foglio di calcolo e questa funzione verrà automaticamente eseguita quando si modificherà un valore. Una funzionalità simile si può ottenere anche con uno trigger installabile dando un qualsiasi altro nome (mi raccomando un nome diverso da onEdit o la funzione verrà eseguita due volte) e creare un trigger sull'evento che la richiami.

Qual'è la differenza tra questi due tipi di trigger se all'apparenza sono così simili?

Le differenze sostanziali stanno nelle limitazioni dei trigger semplici:
  • non possono essere eseguiti se il documento che li contiene è in sola lettura
  • non possono determinare quale sia l'utente corrente
  • non possono accedere a servizi che richiedono autenticazione (es. gmail o calendar)
  • non possono accedere ad altri documenti
I trigger installabili (manualmente o programmaticamente) hanno la possibilità di essere scatenati da molti più eventi e sono molto meno limitati. Tenete sempre conto che i trigger installabili vengono eseguiti con i permessi dell'utente che ha installato il trigger stesso, non con quelli dell'utente che lo ha scatenato. Questo significa quindi che una funzione che invii una mail in base ad una modifica di un documento (nel caso di trigger installato) invierà sempre per conto dell'utente che ha installato il trigger, non per conto di chi ha effettivamente fatto la modifica. Analizzeremo più avanti la gestione dei permessi e delle autorizzazioni.

Rimane da parlare solo degli eventuali errori. Ebbene si, a volte gli errori capitano, anche ai programmatori. Gli Apps Script di default inviano una mail a mezzanotte con il riepilogo di tutti gli errori ma si può configurare il sistema per inviare le notifiche di fallimento in maniera istantanea. In questo modo appena un problema dovesse verificarsi la mail di notifica sarà prontamente inviata.

Ovviamente nessuno vieta a un programmatore di sfruttare il classico try ... catch per gestire eventuali errori.

Nel prossimo articolo spiegherò dettagliatamente come implementare uno script che crei un gruppo di contatti a partire dalle mail presenti in una specifica etichetta. Rimanete sintonizzati.

Nel caso vogliate approfondire gli argomenti trattati consiglio le seguenti pagine di documentazione ufficiale;

Nessun commento:

Posta un commento