giovedì 23 novembre 2017

Google Script per invio SMS alla ricezione di una mail.

Google Apps for business, oppure anche la versione Educational, prevede la possibilità di impostare il numero di telefono nel calendario e, negli appuntamenti, si può prevedere l'invio di SMS come remainder.

L'intento è quello che, alla ricezione di determinate mail, venga inviato un SMS al numero legato al calendario utente.

Per spiegare con un esempio concreto: Abbiamo un UPS che invia una mail in caso di problemi (per esempio mancanza di energia elettrica); si vuole che, quando arriva una mail dall'UPS, venga anche inviato un SMS di avviso.


Il giochetto funziona in questo modo:

  • nella posta si crea un filtro in modo da applicare, a determinate mail in arrivo, l'etichetta "SMS da inviare"
  • si crea un documento Google con uno script che: legge le mail con una determinata etichetta, crea in calendario un evento che prevede la notifica SMS, toglie l'etichetta (altrimenti lo invia di nuovo in un loop!)
  • si schedula lo script ogni tot minuti (sui server Google! così non si deve avere nessun servizio attivo).

Questa la pagina di impostazione, nella App Calendar, per certificare il numero di telefono


Si crea in Drive un nuovo documento (il mio l'ho chiamato SMS_invio) e si va nell'editor degli script


questo l'editor script


il sorgente commentato dello script

//----------------------------------------------------------------------+
// Script          : SMS_invio 1.00 del 10/11/2017                      |
// Google apps-script                                                   |
//----------------------------------------------------------------------+
// Autore     : Fabio Giacobbe - 10/11/2017                             |
// Descrizione: Invia SMS alla ricezione di mail                        |
//----------------------------------------------------------------------+
// Modifiche  :            by                                           |
// Note       :                                                         |
//----------------------------------------------------------------------+

// Per vedere la documentazione su Google Apps scripting 
// https://developers.google.com/apps-script/

// Note sul funzionamento
//
// Lo script si collega alla mail dell'utente,
// legge tutte le mail che hanno una certa etichetta,
// crea un evento nel calendario che prevede l'invio di un SMS remainder.
//
// 1. Etichetta usata per identificare le mail che scatenano l'invio SMS è "SMS da inviare"
// 2. Creare in gmail un filtro per applicare l'etichetta "SMS da inviare" ai messaggi da inviare
// 3. Dopo l'invio le mail vengono spostate in "SMS inviati"

function SMS_invio() {

  // Definizione etichetta che deve scatenare l'invio di SMS
  var trigger_label = GmailApp.getUserLabelByName('SMS da inviare');
  
  // Trova tutte le mail con etichetta 'SMS da inviare' 
  var threads = trigger_label.getThreads();
  
  for(i in threads){

    // Crea un nuovo evento nel calendario che ha come testo l'oggetto della mail
    // aggiungi anche un SMS remainder
    CalendarApp.createEvent( threads[i].getFirstMessageSubject(),
                            new Date(new Date().getTime()+60000),
                            new Date(new Date().getTime()+60000)).addSmsReminder(0);
    
    // Archivia il messaggio processato 
    threads[i].moveToArchive();
  }
  
  // Rimuove l'etichetta dal messaggio processato.
  trigger_label.removeFromThreads(threads);
  
  // Applica etichetta 'SMS inviati'
  sent_label = GmailApp.getUserLabelByName('SMS inviati');
  sent_label.addToThreads(threads);
  

}

quando viene eseguito viene chiesta autorizzazione di accesso alle mail e al calendario:



Per impostare l'esecuzione schedulata si definisce un trigger, dal menu degli script


Ho impostato un trigger ogni 15 minuti

con invio degli errori una volta al giorno.


Ho provato a inoltrare una mail dell'UPS al mio indirizzo, ricevuta alle 17:32 dopo pochi minuti era nella cartella "SMS inviati":


questo l'SMS ricevuto sul telefono:


La cosa funziona anche per gli account free ma, nel calendario, non è possibile inserire il numero di telefono pertanto viene solo creato l'evento nel calendario (senza invio SMS); se però si ha l'APP attiva nello smartphone viene comunque visualizzato l'alert per la scadenza attività.

Nessun commento:

Posta un commento