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;

06/10/13

La mia avventura al #tcsummit2013


Come molti di voi già avranno avuto modo di sapere nella settimana che si conclude ho avuto la possibilità di partecipare al #tcsummit2013
Evento indetto da Google a cui erano invitati a partecipare tutti i TC del mondo (poco più di 500) a spese di BigG.

Certo il fatto che fosse gratuito (viaggio, vitto e alloggio) non è certo stato un deterrente ma personalmente la cosa che più mi gratifica in ogni summit (ho già partecipato a due summit in Italia e questo era il mio primo in California) è che Google ritenga importante ascoltare la mia opinione, le mie idee e i miei suggerimenti.

Purtroppo quasi tutto quello che ci hanno mostrato o di cui abbiamo parlato è coperto da NDA (in italiano "accordo di non divulgazione") quindi se dovessi dirvi troppo verrei estromesso dal programma TC quindi dovrò mordermi la lingua ;)

Posso comunque dirvi qualcosa: è stata un'esperienza impegnativa ma fantastica.

Ok, ho avuto modo di comprare due Nexus 4 (uno per me e uno per +Emanuele Granata ) a prezzi vantaggiosi, ho ricevuto un Chromebook Samsung in regalo da Google (il modello con il supporto per le sim), ho provato i Google Glass, ho fatto acquisti al Google Store (speravo in prezzi più bassi) ma ripeto: la cosa migliore per me è stato avere la possibilità di discutere con googler ansiosi di sentire la nostra voce.

Vediamo cosa posso riepilogare senza rischiare di farmi buttare fuori dal programma per violazione del NDA (accordo di non divulgazione).

+Matt Cutts ha ribadito per l'ennesima volta che attualmente i +1 non influenzano la SERP.
La mia personale considerazione è che il fatto che non siano uno dei fattori che Google utilizza per decidere il ranking non significa che i +1 non abbiano un loro valore. Ogni +1 ricevuto infatti contribuisce a renderci più "credibili" o "affidabili" per l'utente che vede una nostra pagina e questo è indubbiamente un fattore che può spingere l'utente a leggere il nostro post (e una volta letto è più facile che venga dato un +1 o venga ricondiviso aumentando ulteriormente la visibilità). Qualora i +1 dovessero venir presi in considerazione in futuro, noi che abbiamo iniziato ad accumularli subito, saremo ovviamente avvantaggiati. [ribadisco che questa è la mia opinione]


Helpouts sarà una figata pazzesca ma come ha avuto modo di scoprire chi ha già ricevuto l'invito al momento non è disponibile dall'Italia (fortunatamente io ero in California a seguire una sessione del #tcsummit2013 proprio su Helpouts quando mi è arrivato l'invito quindi doppia fortuna). Si tratta di un sistema in cui Google metterà in contatto chi può aiutare gli altri (gratuitamente o a pagamento) con chi ha bisogno di essere aiutato.


Il Chromebook che ci hanno regalato è proprio un bel giocattolino. Gmail, Drive e altre web applicazioni possono funzionare (ovviamente in parte) anche offline quindi persino in Italia ha un suo perché ... Tasto dolente è la tastiera, tastiera americana ovviamente e anche se vengono forniti degli adesivi con i tasti del layout italiano questi non sono tutti applicabili visto che il tasto per il < e > non è presente (si ottengono con alt + shift + z o x ) quindi si rimane un po' in un limbo. Personalmente io scrivo senza guardare la tastiera quindi tengo il layout italiano e digito senza curarmi che i tasti non corrispondano a quanto mi aspetto mentre per programmare cambio il layout in americano così da avere le parentesi più comodamente raggiungibili.

Il summit comprendeva anche una gitarella per il Googleplex giusto per farci rodere per le loro condizioni di lavoro (a confronto Willy Wonka sembra uno schiavista)

Ovviamente non potevo esimermi dal provare i Google Glass. Carini, molto carini ma per il momento le cose per cui sono più utili sono fare foto e video ai propri figli senza dover perdere tempo a tirar fuori l'attrezzatura. Per il resto immagino che al posto di vedere gente camminare fissando il proprio cellulare vedremo gente camminare con lo sguardo assorto ma la differenza sostanziale sarà che alcuni menù sono attivabili inclinando la testa in alto e in basso quindi vedremo anche qualcuno camminare con il passo del piccione :D Scherzi a parte conto di vedere delle applicazioni decisamente interessanti per questo device.

Per il resto, sarò insaziabile, avrei preferito avere ancora più anteprime :)

Spero di riuscire a trovare ancora il tempo per mantenere il mio stato di TC per partecipare al prossimo Summit :)