Bots de conversa de Telegram amb Google Apps Script

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

Guardar dades per a execucions posteriors (a la memòria cau)

Sovint ens interessa guardar una o més dades per a execucions posteriors. Una possible manera és guardar-les a un full de càlcul per podre-les llegir més tard, però és un mètode poc eficient que allarga el temps d'execució del nostre script. Una altra opció és fer servir les memòries cau que Google Apps Script ofereix. En aquestes memòries s'hi pot guardar informació amb un format clau-valor, és a dir que podem tenir una o més claus (també en podríem dir etiquetes) amb un valor (numèric o text) guardat per a cada una.

Atenció: Els objectes i els vectors (array) no es guarden correctament a la memòria cau.

Important: Google no garanteix que la informació que guardem a la memòria cau es mantingui durant el temps establert. És convenient, doncs, preveure que poguem llegir un valor null. En cas que no vulguem o no puguem arriscar-nos a perdre les dades, caldrà guiardar-les d'una forma més persistent; per exemple en un full de càlcul.

Tenim disponibles tres tipus de memòria cau:

Memòria Mètode Comentaris
Document getDocumentCache() Guarda dades vinculades a un document concret, des d'un altre document no són visibles
Si l'script no està vinculat a un document sempre retornarà null
Script getScriptCache() Guarda dades vinculades a un script concret
Usuari getUserCache() Guarda dades vinculades a un usuari i un script concrets
Si l'script s'executa des de Telegram (POST) no es veuen les dades guardades amb GET i al contrari

Tenim diversos mètodes per treballar amb les memòries cau:

Mètode Comentaris
put(clau, valor)
put(clau, valor, temps)
Guarda el valor sota la clau indicada
(com a màxim, durant el temps indicat) []
get(clau) Llegeix el valor corresponent a la clau indicada
remove(clau) Suprimeix la clau indicada i el seu contingut
putAll(conjunt)
putAll(conjunt, temps)
Guarda un conjunt de claus i valors
(com a màxim, durant el temps indicat) []
getAll(claus) Llegeix els valors corresponents a les claus indicades
removeAll(claus) Suprimeix les claus indicades i els seus continguts

El temps s'indica en segons i pot anar des d'1 fins a 21600 (sis hores). El valor per defecte és 600 (deu minuts) però ja hem dit que no està garantit.

Podem guardar un valor sota una clau determinada a la memòria cau d'usuari:

  var cache = CacheService.getUserCache();
  cache.put("parametre", param);

I llegir-lo en una altra execució:

  var cache = CacheService.getUserCache();
  var Param = cache.get("parametre");

També podem assegurar-nos, després de llegir-lo, que no és null:

  var cache = CacheService.getUserCache();
  var Param = cache.get("parametre");
  if (!Param){
    Param = "";
  }

Si hem de guardar diversos valors, ho podem fer amb una única instrucció:

  var cache = CacheService.getScriptCache();
  var valors = {"param1": "valor1", "param2": "valor2", "param3": "valor3", "param4": "valor4"};
  var Param = cache.putAll(valors);

I els podem recuperar també en bloc, tots o una part, i llegir-ne els valors de manera individual:

  var cache = CacheService.getScriptCache();
  var param = ["param1", "param2", "param4"];
  var lectures = cache.getAll(param);
  var val_par1 = lectures["param1"];

En aquest exemple hem fet servir la memòria cau per anar guardant els paràmetres que l'usuari va entrant seqüencialment. I en el joc de Mastermind hi guardem l'estat de la partida.

 

 

 

 

 

 

 

 

 

 

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