Bots de conversa de Telegram amb Google Apps Script

Bots de conversa Exemples Dades pràctiques   Recursos CITCEA
Google Apps Script Projectes Interacció   Inici

Altres formes d'executar l'script

A més d'executar el nostre script amb comandes GET i POST, tenim l'opció de fer-ho a una data i hora concretes, periòdicament cada un cert temps, cada cop que es modifica el nostre calendari o quan es fan certes modificacions en algun document de Google Drive.

L'activació per calendari pot ser útil per fer tasques vinculades al calendari. L'activació per temps pot servir perquè enviï un missatge de forma periòdica o per fer periòdicament tasques de manteniment, com esborrar les entrades antigues en un registre d'esdeveniments.

Si el nostre script està vinculat a un full de càlcul, podem fer que s'executi quan s'obre el full de càlcul o quan s'edita o es modifica. Si aquest full de càlcul està lligat a un formulari, podem executar l'script cada cop que s'envia el formulari i, per tant, s'enregistren dades noves al full de càlcul.

Si el nostre script està vinculat a un document de text, podem fer que s'executi quan s'obre el document.

Per activar alguna d'aquestes formes d'execució cal primer preparar l'script. Ha de tenir una funció que sigui la que s'executi quan hi ha un d'aquests esdeveniments, pot ser una funció específica per a aquesta finalitat o bé una funció que ja fem servir per a altres tasques (com, per exemple, doGet) però hem de tenir present que no podrem passar-li paràmetres. També podem crear una funció específica per a l'execució que cridi una funció ja existent donant-li un paràmetre concret. Per exemple:

function periodica(){
  var ara = new Date();
  var valor = "Activador";
  afegir(ara, valor);
}
function afegir(data, text){
  ...
}

Un cop creada la funció, anem a preparar la seva activació. Hi ha dues formes de configurar els activadors. La més senzilla és anar a la pàgina dels activadors que hi ha al nostre compte i configurar un nou activador amb el formulari corresponent. Aquest mètode és senzill però és totalment manual i requereix que cada cop anem a la pàgina corresponent per modificar-ho. L'altra forma és configurar els activadors des del propi script fent servir les funcions corresponents. Això ens permet canviar els activadors segons les nostres necessitats o fer que els puguem activar i desactivar des de Telegram, entre moltes altres opcions.

Configurar activadors des del web

Per configurar un activador per a la funció, anirem a la pàgina https://script.google.com/ i veurem la llista dels nostres scripts (on s'indica quins estan vinculats a un full de càlcul o un document i quins s'han creat directament). Picarem amb el botó dret sobre l'script que ens interessa i triarem l'opció Activadores en el menú que ens apareix. Allà picarem el botó Añadir activador. Ens sortirà una finestra similar a la següent:

Activador

En el primer desplegable triarem la funció que volem que executi l'activador. Cal tenir present que pot ser que la funció no ens surti si hem entrat en la pàgina de la llista d'scripts abans de crear-la.

A més de la funció, triarem si volem activació per temps o pel calendari. En el primer cas haurem d'indicar la periodicitat o una data i una hora concretes. Cal tenir present que no podem triar el moment de la primera execució, el temps començarà a córrer poc després d'implementar l'activador però no podem definir exactament quan.

Configurar activadors des de l'script

Les possibilitats de configurar activadors són diverses i variades i no les comentarem totes. Els activadors que creem des de l'script es poden consultar també des de la pàgina d'activadors.

A continuació tenim una funció que activa que la funció envia s'executi cada hora. No controla a quina hora s'executarà exactament la funció. Si executem ara la funció activador, sabem que d'aquí una hora (el paràmetre és 1) i una estona (indeterminada) s'executarà envia per primer cop i es continuarà executant, aproximadament, cada hora.

function activador() {
  ScriptApp.newTrigger("envia").timeBased().everyHours(1).create();
}

La següent funció esborra tots els activadors vinculats a la funció envia.

function esbActivadors() {
  var activadors = ScriptApp.getProjectTriggers();
  for (var i = 0; i < activadors.length; i++) {
    if (activadors[i].getHandlerFunction() == "envia") {
      ScriptApp.deleteTrigger(activadors[i]);
    }
  }
}

A continuació hi ha els enllaços a les diferents famílies de funcions relacionades amb els activadors:

Funcions generals dels scripts

Funcions generals dels activadors

Funcions relatives als activadors per temps

Funcions relatives als activadors relatius a formularis

Funcions relatives als activadors relatius a calendaris

Funcions relatives als activadors relatius a documents

Funcions relatives als activadors relatius a fulls de càlcul

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.