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 ;)

19/09/13

Rimandare la lettura di una mail

La fine arte della procrastinazione può affinarsi anche grazie ai Google Apps Script.
Io adoro essere sempre raggiungibile ma essere in controllo su chi mi possa raggiungere e quando e i  questo trovo un valido aiuto in una versione leggermente modificata di uno script rilasciato da Google diverso tempo fa.

Facciamo un esempio concreto della problematica che andremo a affrontare in questo articolo della serie #GAS.

Poniamo che siamo iscritti ad alcune newsletter commerciali (non tutto il commerciale è spam) o riceviamo notifiche di forum. Si tratta di informazioni che noi vogliamo ricevere ma magari non vogliamo che ci disturbino durante il lavoro o lo studio.

In linea di massima la priority Inbox fa un ottimo lavoro consentendoci di ricevere notifiche solo le le mail che riteniamo importanti ma tutte le altre rimarranno, archiviate o nella posta in arrivo, non lette, in attesa di ricevere le nostre attenzioni. Questo però rischia di diventare uno stimolo a interrompere la nostra attività per andare a leggere quelle mail che distolgono la nostra attenzione. Con questo metodo invece le mail verranno archiviate e segnate come lette. In questo modo non ci sarà nulla a distrarci. 
Successivamente, all'orario che avremo stabilito (una volta usciti dall'ufficio, dopo cena o rientrando a casa da scuola) le mail verranno riesumate raggiungendoci con tanto di eventuale notifica.

In questo modo non dovremo rinunciare alle informazioni che ci interessano e non correremo il rischio di venir distratti.

Vediamo subito come implementare questa utilissima funzionalità in pochi semplici passi.
Andiamo al solito indirizzo script.google.com e creiamo uno script vuoto in cui incolleremo questo codice


I commenti nel codice sono abbastanza chiari. La funzione setup è quasi superflua visto che si farebbe prima a creare l'etichetta direttamente in Gmail ma in questo modo vediamo una funzione che verrà chiamata solo una volta per preparare l'ambiente e vediamo correttamente tutto il flusso delle autorizzazioni. Adesso però diamo il via alle danze.

Lanciamo la funzione setup
alla prima richiesta di autorizzazione continuiamo
e CONTROLLIAMO SEMPRE quali autorizzazioni ci vengono richieste prima di accettare

In questo caso lo script noi vogliamo che lo script possa accedere alle nostre email e gestirle modificando etichette e stato quindi l'autorizzazione richiesta coincide con quanto vogliamo.
A questo punto andiamo a configurarlo affinché venga eseguito ogni giorno quando torniamo ad essere meno impegnati

Io ho impostato l'esecuzione tra le 21 e le 22 ma ovviamente voi ovviamente potete impostare l'esecuzione quando più vi aggrada.

Adesso lo script è pronto e autorizzato e ha impostato quanto gli serviva.

Ricordiamoci sempre che in qualsiasi momento possiamo revocare qualsiasi autorizzazione a siti/applicazioni da qui.

A questo punto tutto è pronto per recuperare le mail e non rimane altro da fare che creare un filtro per posticiparla. I criteri ovviamente li scegliete voi, l'importante è che le azioni da eseguire siano:

  • saltare la posta in arrivo (archiviare)
  • applicare l'etichetta "Snooze"
  • segnare come letta
Fatto!
Adesso potete godervi i frutti del vostro lavoro.


Da notare che tutte le mail che verranno filtrate dopo l'esecuzione giornaliera dello script finiranno posticipate al giorno dopo (ho in programma una versione più evoluta che tratterò in seguito).

Se vi interessa l'articolo di google con lo script originale è qui

Come sempre resto in attesa dei vostri feedback ;)

18/09/13

Google Apps Script

Con questo post voglio inaugurare una nuova serie di post un po' più tecnici del solito su un argomento che mi sta decisamente a cuore. Non preoccupatevi però, la mia intenzione non è solo di fornire sterile nozionismo ma voglio guidare per mano coloro che sono interessati a conoscere l'argomento e fornire comunque un prodotto finito per l'utente finale che potrà saltare le spiegazioni e godersi il risultato finale.

Una serie di post per tutti per poter ottenere il meglio dai prodotti Google.

Iniziamo un attimo a capire cosa di cosa sto parlando: Google Apps Script è un sistema cloud per l'esecuzione di codice JavaScript per estendere le funzionalità delle Google Apps. Detto così sembra Arabo ma un mio collega egiziano mi conferma che non lo è. In pratica Google fornisce la possibilità di scrivere di semplici programmi che vengono eseguiti direttamente sui suoi server collegati ai suoi prodotti. Si può creare uno script che salva gli allegati di mail con una certa etichetta in una cartella su Drive. Si può controllare il calendario e mandare delle mail in base a determinati eventi. Si può creare un template per delle mail in Drive e automatizzare la personalizzazione e l'invio a un gruppo di contatti. Si può fare anche molto di più andando a creare interfacce web per l'interazione umana e elaborare i dati fornendo un feed rss o un json per renderli accessibili a terze parti (o ad applicazioni Android). Si può fare ancora molto di più e sempre in maniera molto semplice e veloce.

Ovviamente ci sono anche delle restrizioni. I nostri script avranno a disposizione delle risorse limitate: una singola esecuzione non può protrarsi oltre i 6 minuti (che è già un bel tempo) quindi dovremo elaborare grosse quantità di dati in più scaglioni. Ci sono anche limitazioni sulle 24 ore, sul traffico generato e su altre cose ma in linea di massima impareremo a convivere con questi limiti creando comunque delle piccole meraviglie (lo stato di funzionamento dei vari servizi e il riepilogo delle quote è consultabile qui).

Ovviamente per raggiungere i massimi livelli di competenza i requisiti sono la conoscenza della lingua Inglese, una mentalità da programmatore e la conoscenza di JavaScript. Il mio obiettivo però è ampliare il più possibile il bacino d'utenza includendo anche chi non abbia alcuno di questi requisiti.

Il modo migliore per iniziare è puntare direttamente su script.google.com

Come si può vedere di default abbiamo una schermata con 3 sezioni:
  •  a sinistra abbiamo la possibilità di sfruttare dei semplici template per utilizzare, velocemente ed in modo guidato, i vari servizi
  • a destra nella metà superiore abbiamo link ad alcuni tutorial
  • a destra in basso abbiamo gli script più recenti che abbiamo aperto
Una volta divenuti degli esperti non avremo più bisogno di questa schermata e potremo evitare di farla comparire ogni volta.

Vi consiglio di provare a selezionare Gmail dalla colonna di sinistra, di dare un'occhiata al codice che viene mostrato e all'ambiente con cui cercherò di farvi familiarizzare nell'arco dei prossimi post.

Questo esempio non vi darà problemi se avete la inbox quasi vuota altrimenti girerà molto a lungo ...
Il mio consiglio è di modificare la riga numero 9 da
for (var i = 0; i < threads.length; i++) {
in
for (var i = 0; i < threads.length && i < 3; i++) {
in questo modo (oltre ad aver fatto la vostra prima modifica a uno script) vi assicurerete che lo script sia eseguito al massimo sulle prime 3 discussioni della vostra inbox.
Il passo successivo è salvare questo nuovo semplice progetto in modo da poterlo testare. Una volta datogli un nome (io l'ho chiamato "test gmail") possiamo aprire il menù "Esegui", cliccare su "processInbox" e ammirare la prima finestra di sicurezza "Autorizzazione richiesta". Uno script per accedere ai dati richiede delle autorizzazioni da parte dell'utente, approfondiremo in seguito. Per ora iniziamo a cliccare su "Continua" e controlliamo nella nuova finestra il dettaglio delle autorizzazioni richieste che in questo caso si limitano a "Visualizza e gestisci la tua posta" (considerando che la funzione in questione andrà a scorrere i messaggi nella inbox e loggare gli oggetti direi che è sensato). Una volta terminata l'esecuzione dal menù "Visualizza" si può accedere al "Log" e troveremo una lista degli oggetti dei messaggi delle discussioni presenti nella nostra inbox (al massimo delle prime 3).

Una volta finiti i vostri test potete rimuovere l'autorizzazione concessa andando qui e cercando il nome del progetto (nel mio caso "test gmail") e cliccando sul pulsante a fianco.

Il prossimo articolo sarà su un mio piccolo adattamento di uno script pubblicato da Google diverso tempo fa incentrato sull'ottimizzazione delle mail ricevute per non essere distratti durante il lavoro ma essere sicuri di non perdere nemmeno una delle mail che vogliamo ricevere.

Spero con questo di aver iniziato a incuriosirvi e di invogliarvi a seguire questa serie di articoli taggati #GAS.
Nel frattempo potete iniziare a dare un'occhiata alla sezione ufficiale sul portale per gli sviluppatori di Google https://developers.google.com/apps-script (in Inglese)

P.S. si, so che alcuni di voi se ne saranno accorti: sto cercando di guadagnarmi il titolo di GDE per Apps Script quindi il vostro apprezzamento, i vostri consigli e le vostre critiche sono ben più che graditi. SONO RICHIESTI !!!

10/09/13

Google Plus e i post embedded

Basta una semplice infarinatura di html (ma penso che il più delle volte se ne possa anche fare a meno) per includere un post (pubblico) di G+ in una qualsiasi pagina esattamente come questo ...

La potenza di questa funzionalità è incredibile. Da G+ basta selezionare la voce dal menù a discesa
In italiano la voce da selezionare è "Incorpora post" e poi incollare il codice ottenuto nel sorgente della pagina ed ecco che il gioco è fatto.

Il requisito fondamentale è che il post in questione sia pubblico, bisogna poi notare che non tutti i tipi di post sono ancora supportati.

I seguenti tipi di post, infatti, non possono essere incorporati:

  • post di una community
  • post di Eventi
  • post di Hangout on Air 
Mi raccomando di inserire la mia pagina G+ in una cerchia con notifiche per non rischiare di perdervi i futuri aggiornamenti.

06/09/13

Il modo sbagliato di usare le cerchie di G+

Mi è capitato spesso di leggere post del tipo:
Ehi, volevo sapere chi di voi è interessato all'argomento XYZ così lo inserisco nella mia cerchia su XYZ ed evito di annoiare gli altri
Forse non ci avete mai fatto caso ma questo modo di usare le cerchie è sbagliato e vi danneggia.
Chiariamo subito che usare le cerchie per mantenere privati dei contenuti può essere la scelta giusta. Di sicuro è la scelta sbagliata usarle semplicemente per incanalare dei post tematici, soprattutto se vogliamo condividerli con altri appassionati.

Perchè dico che è sbagliato ?
Semplice: i post condivisi con una cerchia sono visibili solo ai membri di quella cerchia.

Facciamo un semplice esempio per valutare l'impatto concreto che avrebbe l'uso "tematico" delle cerchie.

Io mi vanto di essere competente a aggiornato su Android, Google e grigliate ma visto che non tutti i miei contatti sono interessati a questi argomenti decido di creare 3 cerchie (una per argomento) e mettermi a "etichettare" i miei contatti inserendoli nelle cerchie di loro interesse e da questo momento in avanti mi limito a condividere i post che scrivo su un argomento solo con la cerchia corrispondente.

  • d'ora in avanti dovrei chiedere a chiunque aggiungo se è interessato a uno o più degli argomenti che condivido privatamente
  • se qualcuno mi seguiva perchè interessato a quegli argomenti ma non era nelle mie cerchie non vedrà più nulla a meno che io lo aggiunga (ma non siamo su FB, perchè dovrei ricambiarlo solo per mostrargli post che non sarebbero riservati ???)
  • se un nuovo utente cercasse qualcuno che parli di quegli argomenti e desse un'occhiata al mio profilo non vedrebbe post in merito (ma G+ è una città fantasma???)
Tutti questi svantaggi solo per evitare di infastidire i propri contatti con post che non trovano molto interessanti ? ASSURDO !!!

I post tematici che non hanno ragione di essere privati andrebbero condivisi pubblicamente per permettere la crescita della rete sociale e la scoperta di nuove persone interessanti. In ogni caso di default Google+ non visualizza nello stream tutti i post delle persone che seguiamo ma fa una selezione.

Personalmente consiglio caldamente l'uso delle community. I post nelle community (anche in quelle pubbliche) non vengono mostrate nello stream di chi non è un membro della community, nemmeno se ci segue. Questo eviterebbe ai nostri contatti di essere annoiati dai nostri post tematici. I post sarebbero comunque visibili nel nostro profilo dando la possibilità di essere scoperti da persone interessate.

L'ideale sarebbe cercare community tematiche che combacino con i nostri interessi (evitando accuratamente di entrare in più community simili solo per condividere lo stesso contenuto ovunque ... è spam è non piace ne a google ne agli utenti) o, nella peggiore delle ipotesi, crearsi la propria community.

Avete dei motivi che ritenete validi per continuare a fare l'uso sbagliato delle cerchie o sono riuscito a convincervi ?

05/09/13

Come gestire le notifiche di G+ da Gmail

In molti troppi si lamentano di ricevere notifiche via mail di Google Plus e cercano istruzioni su come eliminarle.

Personalmente trovo che sia una delle più comode funzionalità offerte dall'integrazione tra G+ e Gmail infatti ho abilitato tutte le notifiche via mail dalle impostazioni di G+
e questa è la parte più semplice ...

... scherzo, anche il resto è semplice.

Non serve fare altro che creare un filtro in gmail che prenda tutte le mail in arrivo da G+ e archiviarle sotto un'etichetta specifica.

Di fatto il filtro non è altro che un semplice file XML


La via più veloce è scaricare il filtro già pronto da qui e importarlo in gmail ma potreste voler variare l'etichetta sotto cui vengono archiviate le notifiche (dovreste modificare la riga 16 sostituendo "Notifiche/Google+" con l'etichetta che preferite).

Riepilogando:
  1. abilitate tutte le notifiche
  2. scaricate il filtro
  3. importate il filtro
Semplice e veloce.

La domanda che potrebbe sorgere è: perché farlo ?
La risposta è che ci sono diversi vantaggi:
  • la posta in arrivo non è affollata di mail
  • non perderemo traccia delle varie discussioni
  • leggendo da gmail una notifica questa viene segnala come letta anche da Mr. Jingles
  • da Gmail vedremo le notifiche come post di G+ con la possibilità di commentare, dare +1 e condividere
  • in Gmail le varie funzionalità rimangono invariate e potremmo segnare una discussione come speciale e applicare altre etichette (manualmente o tramite filtri) in modo da poter ritrovare molto più agevolmente i post interessanti
Voi cosa ne pensate ?
Di fronte a questi vantaggi e alla semplicità della procedura avete dei validi motivi per evitare le notifiche via mail ?