Microsoft Excel

Microsoft Excel

giovedì 19 febbraio 2015

Come utilizzare i form di google per notificare informazioni via mail a più indirizzi


I form di google sono moduli on line che vengono utilizzati per sondaggi e per acquisizione di informazioni in genere. I moduli si costruiscono in maniera intuitiva, partendo da https://docs.google.com/forms/. I moduli vengono poi compilati direttamente on-line (possono essere pubblicati su un sito web o accessibili conoscendo il link di collegamento) oppure inviati via email. Una volta che il modulo compilato viene inviato, le informazioni contenute vengono direttamente acquisite (registrate) da un foglio elettronico di google, associato al modulo stesso. Esso può poi essere esportato sul desktop in diversi formati. Google dispone si un’ampia documentazione e in molti hanno già scritto intorno ai form e alla loro personalizzazione lavorando con javascript. Quindi mi limiterò ad un esempio utile nel lavoro, cioè di come utilizzare i form per notificare informazioni via mail a più indirizzi. L’esempio non è altro che una modifica di una funzione di Amit Agarwal chiamata “Sendmail”, riportata nel tutorial http://www.labnol.org/?p=20884 */  ,che invia una notifica a un solo indirizzo.

Spesso nel lavoro risulta utile utilizzare i form per registrare velocemente informazioni ricevute, modificarle e comunicare le risposte via mail ai diretti interessati. Si pensi al caso di un cittadino che richiede lo smaltimento di un rifiuto ad un tecnico in servizio di controllo sul territorio. La richiesta viene registrata direttamente “in situ”, compilando il modulo on-line sul tablet, e trasmessa via mail al centralino dell’azienda e all’utente stesso. Oppure al caso di due dipendenti che richiedono telefonicamente un’inversione del turno di servizio assegnato. La richiesta di “cambio turno” viene registrata direttamente on-line dal tecnico, e comunicata agli interessati per l’accettazione via email. Quando richieste di questo tipo sono numerose, come avviene nelle aziende medio-grandi, si rende necessario “automatizzare” il processo che invia notifiche a più indirizzi.
Si procede in questo modo:

1.      Accedere a Google Drive e creare un nuovo foglio elettronico. Si noti che la colonna più a sin., “informazioni cronologiche” è generata “in più” dal foglio elettronico ed è la colonna 0 (zero). Le intestazioni delle colonne sono generate direttamente dal database una volta compilato il primo modulo.

Un foglio già compilato è simile a quello sotto riportato.


2.      Strumenti → Crea Modulo → Costruire il modulo con l’aggiunta di elementi. In particolare aggiungere i campi “indirizzo mail del mittente” e “indirizzo mail destinatario” in quanto vogliamo inviare le notifiche ai dipendenti.

Nella visualizzazione mail il modulo è simile a quello sotto riportato, dove compaiono due caselle di controllo (elenco a discesa), chiamate “indirizzi mail mittente” e “indirizzi mail destinatario”, che contengono gli indirizzi email dei dipendenti.




3.     Modificare lo script del modulo. Strumenti → Editor di script. Cancellare lo script esistente e copiare lo script del tutorial http://www.labnol.org/?p=20884 */
4.      Modificare lo script del tutorial allo scopo di notificare le mail ad entrambi i dipendenti.
       Lo script risulta modificato nella righe

MailApp.sendEmail(email1, subject, message)
MailApp.sendEmail(email2, subject, message)
Dove

var email1 = e.values [8];
var email2 = e.values [9];
sono due variabili che assumono il valore contenuto nella cella della Colonna 8 e 9 che nel ns. caso è l’indirizzo mail

/* Send Google Form by Email v2.1 */
/* For customization, contact the developer at amit@labnol.org */
/* Tutorial: http://www.labnol.org/?p=20884 */
                function Initialize() {
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
}
  ScriptApp.newTrigger("SendGoogleForm")
  .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
  .onFormSubmit()
  .create();
}
function SendGoogleForm(e)
{ 
  try
 {     

 // You may replace this with another email address
    var email1 = e.values [8];
    var email2 = e.values [9];

// Optional but change the following variable
               // to have a custom subject for Google Form email notifications

   var subject = "Google Docs Form Submitted"; 
   var s = SpreadsheetApp.getActiveSheet();

   var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];   

   var message = "";   

   // Only include form fields that are not blank

    for ( var keys in columns ) {

    var key = columns[keys];

    if ( e.namedValues[key] && (e.namedValues[key] != "") ) {

    message += key + ' :: '+ e.namedValues[key] + "\n\n";

      }

    }

    // This is the MailApp service of Google Apps Script
    // that sends the email. You can also use GmailApp for HTML Mail.

    MailApp.sendEmail(email1, subject, message)
    MailApp.sendEmail(email2, subject, message)

  } catch (e) {

    Logger.log(e.toString());

  }

}

Compilare il form e inviarlo via mail. Il database registra le informazioni contenute nel modulo. Inoltre i richiedenti ricevono una notifica del tipo:


In conclusione, lavorando con i moduli e la loro automazione, siamo in grado di misurare, gestire e controllare i servizi richiesti e effettuati.

Buon Lavoro
Daniele Paolinelli