Google Apps Script per i workflow aziendali

Di - 26 June 2013 - in

La piattaforma Google Apps mette a disposizione dei suoi utenti uno strumento flessibile e versatile per creare workflow, (con vari livelli di complessità), e realizzare procedure automatiche in poco tempo: Google Apps Script.

Google ha pubblicato API per tanti servizi, siano essi lato utente (Calendar, Drive, Gmail) che amministrativi (Domain service Api), ed un editor online del codice semplice ma completo. Il linguaggio utilizzato negli Apps script è, come immaginato, Javascript, con la possibilità di inserire librerie per espandere il set funzionale originario dello strumento.

Apps Script si configura quindi come un linguaggio facile da utilizzare e molto integrato in tutta la suite di messaggistica e collaborazione: il suo punto di forza è sicuramente rappresentato dalla possibilità di aggiungere funzionalità non previste o non ancora presenti nei prodotti Apps e di automatizzare alcuni task di utilizzo frequente  risolvendo in modo intelligente, e senza appoggiarsi a tool esterni, problemi quotidiani.

L’esempio di cui vi voglio parlare ci è stato condiviso da Niels Buekers, specialista delle soluzioni Apps presso Capgemini Belgium, system integrator molto attivo ed importante. Niels in uno dei suoi ultimi deploy e migrazioni si è trovato di fronte ad una società i cui dipendenti, per necessità lavorative, avevano il bisogno di creare dei gruppi di distribuzione personali, indirizzi di posta veri e propri a cui spedire messaggi collettivi o con cui condividere risorse.

Poichè queste liste sarebbero erogate e mantenute dagli amministratori della piattaforma, per snellire tutto l’iter di richiesta, approvazione e creazione di questi gruppi, Niels ha proposto di automatizzare il processo mediante Apps Script.

All’inizio ogni dipendente doveva, per accelerare la composizione dei suoi messaggi, definire dei gruppi di contatti personali che, al momento della digitazione, ne “esplodevano” i membri direttamente nell’interfaccia di posta:

Questo meccanismo, oltre ad essere manuale, obbligava ciascun impiegato alla creazione di tanti insiemi di contatti nella propria rubrica. La soluzione migliore sarebbe stata rappresentata da dei “gruppi amministrativi” (definiti all’interno della dashboard e dotati di un indirizzo di posta vero e proprio) ma, proprio in virtù della loro centralità, meno flessibili e sottoposti a tempi di creazione più lunghi.

Niels ed il suo team hanno per questo utilizzato poche righe di codice Apps Script per consentire agli utenti di scegliere dalla propria inbox i messaggi da cui estrarre i destinatari e, con questi, compilare un unico spreadsheet per consentire una veloce approvazione e creazione della nuova lista di distribuzione ad hoc e con i membri richiesti.

/**
 * Parsiamo l'etichetta group_request e popoliamo lo spreadsheet
 */
function processInbox() {
  // Get threads that have the group_request label.
  var groupRequestLabel = GmailApp.getUserLabelByName('group_request');
  var threads = groupRequestLabel.getThreads(0, 10);

  // For each thread, retrieve all recipients and create a group request.
  for (var i = 0; i < threads.length; i++) {
    var firstMessage = threads[i].getMessages()[0];
    var sender = firstMessage.getFrom();
    var recipients = [];

    // Add sender.
    recipients.push(parseAddresses(sender));

    // Add recipients.
    if (threads[i].getMessages()[0].getTo()) {
      var toRecipients = parseAddresses(firstMessage.getTo());
      recipients.push(toRecipients);
    }

    // Add CCs.
    if (threads[i].getMessages()[0].getCc()){
      var ccRecipients = parseAddresses(firstMessage.getCc());
      recipients.push(ccRecipients);
    }

    // Write all recipients to a cell in the spreadsheet
    // and send emails to ask for group name and approval.
    createGroupRequestForRecipients(recipients,
        Session.getActiveUser().getEmail());

    // Remove label from this thread now that it has been processed.
    threads[i].removeLabel(groupRequestLabel);
  }
};

Completano il tutto dei messaggi di posta inviati dallo script per chiedere all’utente di suggerire un nome per il proprio gruppo e per notificare gli amministratori dell’avvenuta compilazione.
E’ stato inoltre introdotta una seconda porzione di codice che consente, mediante le già citate Domain Service Api, di creare direttamente dal foglio di calcolo elettronico il gruppo deciso ed approvato:

/**
 * Creates a new group in the Google Apps cPanel with the provided name
 * and members.
 */
function createGroupWithAddresses(addresses,groupName){
  var group = GroupsManager.createGroup(groupName, groupName, groupName,
    GroupsManager.PermissionLevel.DOMAIN);
  var splitAddresses = addresses.split(',');
  for (var i = 0; i < splitAddresses.length; i++) {
    Logger.log('Adding ' + splitAddresses[i]);
    group.addMember(splitAddresses[i]);
  }
};

Il risultato finale consente a tutti gli utenti di poter scrivere e condividere contenuti con gruppi molto precisi di utenti, in modo semplice e veloce senza rinunciare a un controllo ed una approvazione da parte degli admin.

 

Apps Script è un grimaldello semplice da impiegare, con tante feature out-of-the-box, (ad esempio trigger e schedulatori temporali automatici), che può fare davvero la differenza in tutti i processi di adozione della suite Apps e consente non tanto agli sviluppatori, ma alle persone che lavorano nel cosiddetto “core business“, e che non sempre hanno un background tecnico, di costruire la propria Google Apps Experience.

Via | Google Apps Developer Blog

Leave a Reply

Andrea Testa Articolo scritto da

Laureato in Comunicazione Digitale, curioso ed affascinato dall'informatica, specialista Google Apps. Sviluppatore software, ama tutto ciò che si manifesta sotto forma di intelligenza, tecnica ed innovazione, come il web e l'open source.

Contatta l'autore

Previous post:

Next post: