Creant un Google apps script

Español (Spanish) English

Primer de tot cal tenir en compte que els Google apps script es basen en Javascript. No cal ser-ne un expert programador, ans al contrari, però si que s’ha de dominar una mica la sintaxi del llenguatge. Per tant, si no coneixeu la sintaxi del Javascript, jo us recomano que aneu al següent enllaç i realitzeu les activitats que us proposen. Són 16 mòduls que es poden fer en unes 10 hores, però tampoc cal que els feu tots. Amb els 5 o 6 primers ja fareu. http://www.codecademy.com/tracks/javascript

Un cop coneguda la sintaxi del Javscript, centrem-nos en un exemple d’script. En aquest cas, farem un script per aconseguir que un formulari arribi per correu electrònic a la persona que el contesta.

Al web del meu centre tenim un formulari per si algú de la comunitat educativa vol fer arribar a la direcció alguna queixa o suggeriment. És un formulari fet amb Google que només té 4 camps: Nom i Cognoms / Adreça de correu / Curs (només si és alumne o família) / Descripció de la queixa o suggeriment.

El que ha de fer l’script que us vull presentar és enviar una còpia de les respostes a la persona contesti el formulari. Si teniu un GAFE això es pot fer obligant a l’usuari a iniciar sessió, però en aquest cas volem que contestin el formulari persones que no estan al nostre GAFE (famílies, empreses…).

Primer de tot, lògicament, cal crear el formulari de Google i accedir al full de càlcul on aniran a parar les respostes del formulari.

Dins d’aquest full de càlcul, accedirem a Eines / Editor d’script

script1

Crearem un script en blanc i escriurem el següent codi:

script2

/**
* Envia les respostes d'un formulari 
* per mail 
*/ 

function onChange() { 
//Preparem els destinataris i el cos del missatge 
var cap="Heu enviat correctament una queixa o suggeriment a l'INS L'Estatut. A continuació podeu veure les dades que heu indicat:"; 
var titol= "Confirmació queixa o suggeriment"; 

var cosmissatge=cap; 
var dest = ""; 
var camp = ""; 
var llibreActual = SpreadsheetApp.getActiveSpreadsheet(); 
var fullrespostes = llibreActual.getSheets()[0]; 
var rangresp = fullrespostes.getDataRange(); 
var ul_fila= rangresp.getNumRows(); 
var trobat=0; 
//Recollim la darrera fila del full de respostes
for (j=1; j<rangresp.getNumColumns()+1;j++){ 
camp = rangresp.getCell(ul_fila,j).getValue(); 
for (i=0;i<camp.length;i++){ if (camp.charAt(i)==='@'){ 
trobat=1; 
} 
}
if (trobat===1){ 
dest=camp; 
trobat=0; 
} else { 
cosmissatge= cosmissatge+rangresp.getCell(1,j).getValue()+": "+camp+" "; 
}
}
//Enviem els missatges 
GmailApp.sendEmail(dest, titol, '',{ htmlBody: cosmissatge}); 
};

Analitzem una mica aquest codi i veiem enllaços interessants per seguir aprofundint. L’inici només serveix per definir variables (Títol del correu que s’enviarà / Capçalera del correu) i altres variables de programació. Cal fer esment a tres concretes:

var llibreActual = SpreadsheetApp.getActiveSpreadsheet(); 
var fullrespostes = llibreActual.getSheets()[0]; 
var rangresp = fullrespostes.getDataRange();

Per entendre aquestes, ens anirà molt bé l’ajuda de Google. La trobareu a https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app Aquí se’ns mostren tots els objectes propis de les aplicacions de Google i les seves propietats. En les variables que he definit a l’script, la variable llibreActual és un llibre de càlcul sencer. Concretament el llibre actiu. La variable fullrespostes, és el primer full de càlcul del llibre. La variable rangresp és un conjunt de cel·les, totes les que tenen dades. Haguéssim pogut obtenir directament la darrera variable, rangresp, fent

var rangresp = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getDataRange()

però així d’entrada potser hagués estat més difícil d’entendre. Tots els scripts es basen en això, objectes i propietats. Amb l’ajuda de Google, podem trobar qualsevol cosa de les aplicacions de Google (valors cel·les, destinataris de correus, nombre de files, text d¡un document…). Seguint amb l’exemple,

var ul_fila= rangresp.getNumRows(); 
var trobat=0; 
//Recollim la darrera fila del full de respostes
for (j=1; j<rangresp.getNumColumns()+1;j++){ 
camp = rangresp.getCell(ul_fila,j).getValue(); 
for (i=0;i<camp.length;i++){ if (camp.charAt(i)==='@'){ 
trobat=1; 
} 
}
if (trobat===1){ 
dest=camp; 
trobat=0; 
} else { 
cosmissatge= cosmissatge+rangresp.getCell(1,j).getValue()+": "+camp+""; 
}
}

mirem cel·la per cel·la de la darrera fila. Per això definim una variable ul_fila que és el nombre de files del rang amb dades. Justament l’última té la resposta que volem enviar. Fixeu-vos que podem mirar el valor de cada cel·la fent un bucle for, així les mirarem totes. Per accedir al valor, utilitzem les propietats getCell (per fixar la cel·la) i getValue (per obtenir-ne el valor). Com que no sabem en quin camp l’usuari posarà el mail, el que fem és mirar lletra per lletra si aquella cel·la té el símbol @. Per fer-ho, utilitzem un segon for, que va comparant cada lletra amb l’@.

Ja només resta crear el cos del missatge, on hi posarem el nom del camp (que està a la primera fila) i a continuació la resposta.

L’script acaba enviant el correu

//Enviem els missatges 
GmailApp.sendEmail(dest, titol, '',{ htmlBody: cosmissatge});

Per fer-ho utilitzem un altre objecte de Google. No és de fulls de càlcul, sinó de correu. En un altre apartat de la pàgina d’ajuda de Google podem trobar els objectes del Gmail: https://developers.google.com/apps-script/reference/gmail/

Un cop fet l’script i entès el seu funcionament, només ens falta programar que s’executi cada cop que algú respongui el formulari. Això ho farem amb els disparadors.

script4

Configurarem que l’script que acabem de crear, s’executi cada cop que algú respongui el formulari.

script5

Aquí és important quin usuari està activant el disparador, ja que aquest serà l’usuari que enviarà el mail. Si estem creant l’script amb usuari de professor, però volem que el mail l’enviï un usuari de centre, caldrà compartir el full amb l’usuari de centre en mode edició i que aquest activi el disparador.

Si voleu veure com funciona aquest script a la pràctica, a continuació teniu el formulari. Si el contesteu, rebreu un correu meu amb la confirmació.

https://docs.google.com/a/insestatut.cat/forms/d/1k_0VSP6qP0S5f66MWe0vwztw-EzJi4sXVcFRhS14zx8/viewform

Crec que els Google apps scripts són una gran eina, ja que ens pot servir per infinitat d’operacions (copiar dades entre fulls, combinar informació de documets i fulls de càlcul i enviar-ho per mail…).. Si sabeu una mica de programació no us serà gens difícil entrar en la seva forma de funcionar i podreu fer el que vulgueu. Són ideals per automatitzar processos que d’altre manera s’han de fer de forma manual.

Español (Spanish) English

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.