| Bots de conversa | Exemples | Dades pràctiques | Recursos CITCEA | |
| Google Apps Script | Projectes | Interacció | Inici |
El web CodeCogs permet generar la imatge d'una equació a partir d'unes indicacions proporcionades en codi LaTex. Aquest mateix web ofereix un servei que ens permet cridar-lo des de Google Apps Script i obtenir la imatge en el format desitjat.
La següent funció genera una imatge en format png a partir del codi LaTex que li entrem com a paràmetre. La pròpia funció envia la imatge al xat de Telegram corresponent a l'identificador que i hem donat com a paràmetre. Podem demanar-li la imatge en un altre format, seguint les instruccions que trobarem en aquesta pàgina. En aquest cas s'envia el codi LaTex com a peu de la imatge però podríem enviar, amb un senzill canvi, qualsevol altre text o no posar peu.
Podem trobar les principals comandes per generar equacions amb LaTex en aquesta pàgina.
function formula(ident,formu){
// Demanem la imatge de la fórmula a l'adreça https://latex.codecogs.com
var url = "https://latex.codecogs.com/png.image?"+ encodeURIComponent(formu);
// Obtenim la imatge de l'adreça i la passem a format BLOB
var img = UrlFetchApp.fetch(url).getBlob();
sendBlobFile(ident,img,formu); // Enviem la imatge a Telegram
// posant el codi LaTex com a peu
}
Aquesta funció, però, no dona uns resultats satisfactoris a Telegram. Si ho provem, amb el següent codi:
x^2+y^2=1
obtindrem el següent missatge:

Una manera de resoldre aquest inconvenient és demanar-li que ens generi la imatge en format SVG i que ens posi el fons blanc. Després la imatge rebuda la guardarem a una carpeta del nostre Google Drive i demanarem que ens generi una imatge en miniatura (thumbnail), que serà la que enviarem a Telegram. Després podrem esborrar el fitxer de la imatge. En aquesta versió, caldrà donar-li també l'identificador de la carpeta. Ara l'adreça per demanar la imatge és més llarga perquè conté la indicació del color del fons. Costa d'entendre perquè alguns caràcters s'han substituït pels seus codis però si desfem la substitució podem observar:
https://latex.codecogs.com/svg.image?\bg{white}
on es veu més clar que li estem indicant que el fons (background, bg) sigui blanc.
function formula(ident,formu){
// Identificador de la carpeta on guardarem els fitxers
var folderId = "^^UazkEipsUysdDi4NR4rgZnzPmeWWHdk";
// Demanem la imatge de la fórmula a l'adreça https://latex.codecogs.com
var url = "https://latex.codecogs.com/svg.image?%5Cbg%7Bwhite%7D"+ encodeURIComponent(formu);
// Obtenim la imatge de l'adreça i la passem a format BLOB
var img = UrlFetchApp.fetch(url).getBlob();
// Guardem el BLOB en un fitxer
var fitxer = DriveApp.getFolderById(folderId).createFile(img);
// Agafem l'identificador del fitxer creat
var id_fitxer = fitxer.getId();
// Fem un bucle per esperar que estigui llesta la miniatura
var repetir = true;
var cnt = 0; // Comptador de dècimes de segon
while(repetir){ // Mentre no estigui
var thumb = DriveApp.getFileById(id_fitxer).getThumbnail(); // Mirem si ja s'ha creat la miniatura
Utilities.sleep(100); // Esperem una dècima de segon
cnt++;
if((cnt > 100) || (thumb)){ // Si ja està o han passat deu segons
repetir = false; // Sortim del bucle
}
}
sendBlobFile(ident,thumb,formu); // Enviem la imatge a Telegram
// posant el codi LaTex com a peu
DriveApp.getFileById(id_fitxer).setTrashed(true); // Marca com a esborrat el document provisional
}
En aquest cas, si ho provem amb el següent codi:
x^2+y^2=1
obtindrem el següent missatge:

En aquest exemple hi ha un programa complet que fa servir aquesta funció.

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