| Bots de conversa | Exemples | Dades pràctiques | Recursos CITCEA | |
| Google Apps Script | Projectes | Interacció | Inici |
Aquest bot de Telegram està creat per a poder fer la gestió monetària d'una comunitat de propietaris. És l'administrador de la comunitat el que haurà de proporcionar les dades de cada propietat. L'administrador també serà responsable d'introduir i modificar el valor de la quota total i el percentatge destinat a les despeses ordinàries. El percentatge dels estalvis no és modificable, doncs va lligat al percentatge de les despeses ordinàries. D'aquesta forma, si en una junta posterior es decideix modificar aquests percentatges, el bot no queda en desús.
Un cop introduïda la diferent informació, l'administrador ja podrà consultar certa informació sobre cada propietat. Una de les moltes funcionalitats disponibles per l'administrador és demanar al bot de Telegram la quota mensual de cada propietat o el seu correu vinculat. Per fer possible el control dels pagaments, cada vegada que l'administrador rebi la notificació del banc conforme un propietari ha pagat, haurà d'introduir un missatge en el xat.
El programa de l'script és el següent:
var token = "^^16879430:AAFKWQMD7mMPHq6z0vUOQKtbmge4-YsIVaA";
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = "https://script.google.com/macros/s/^^fycbwVZQVlWrpdDfqZcdmCwXsB4Y0bZcT27IPa9rZ_0WuQ0RkdopLKzvhlvRupyRN8cLgt_Q/exec";
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function sendMessage(id, text) {
var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text="+ text;
var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
var id = contents.message.from.id;
var text = contents.message.text;
var ssId = "^^SQ1Np4wI4yvn2eLVeIu7OWMWPkYn9sf6N_6stN1Klo";
var sheet1 = SpreadsheetApp.openById(ssId).getSheetByName("informació");
var sheet2 = SpreadsheetApp.openById(ssId).getSheetByName("compacte");
var sheet9 = SpreadsheetApp.openById(ssId).getSheetByName("Pagaments");
var paraules = text.split(" ");
var pp = paraules[0];
var sp = paraules[1];
var tp = paraules[2];
var qp = paraules[3];
var cp = paraules[4];
var ingressos = SpreadsheetApp.openById(ssId).getSheetByName("informació").getDataRange().getCell(1,1);
var pdespeses = SpreadsheetApp.openById(ssId).getSheetByName("informació").getDataRange().getCell(1,2);
var id1 = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(3,2);
//CANVIAR ELS INGRESSOS TOTALS DESITJATS majúscules i minúscules
if (pp == "/qtotal") {
var ingressos = ingressos.setValue(sp);
return sendMessage(id, "OK!");
}
//CANVIAR EL PERCENTATGE DE DESPESES FIXES majúscules i minúscules //COMANDA: percentatge despeses "numero"
if (pp == "/pdespeses") {
if (0 <= parseInt(sp) && parseInt(sp) <=100) {
var pdespeses = pdespeses.setValue(sp/100);
return sendMessage(id, "OK!");
} else {
return sendMessage(id, "El percentatge ha d'estar entre 0 i 100.");
}
}
// COMANDA: quota "numero prop"
if (pp == '/quota'){
var n = parseInt(sp)+2;
var quota = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,5).getValue();
return sendMessage(id, quota +' €');
}
// COMANDA: pagat "numero prop"
if (pp == '/pagat'){
var n = parseInt(sp)+2;
var perpagar = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,6).setValue(1);
return sendMessage(id, 'Pagament registrat de manera correcta!');
}
// COMANDA: pagat "numero prop"
if (pp == '/nopagat'){
var n = parseInt(sp)+2;
var perpagar = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,6).setValue(0);
return sendMessage(id, 'Pagament editat!');
}
// COMANDA: check QUOTA = 0 no enviar correu
if (pp == '/comprova'){
var m = "Cal que facis el pagament d'aquest mes de ";
var asunto = 'Pagament pendent';
var ultimafila = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getLastRow();
for (var i=3; i<=ultimafila; i++){
var pagado = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(i,6).getValue();
if (parseInt(pagado) == 0){
var mail = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(i,2).getValue();
var cuota = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(i,5).getValue();
GmailApp.sendEmail(mail, asunto, m + String(cuota) + ' €!')
}
}
}
// COMANDA: id "numero prop"
if (pp=='/correu'){
var n = parseInt(sp)+2;
var idprop = SpreadsheetApp.openById(ssId).getSheetByName("compacte").getDataRange().getCell(n,2).getValue();
return sendMessage(id, idprop)
}
//per començar el bot
if (pp == '/help'){
var a = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(1,1).getValue();
var b = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(2,1).getValue();
var c = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(3,1).getValue();
var d = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(4,1).getValue();
var e = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(5,1).getValue();
var f = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(6,1).getValue();
var g = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(7,1).getValue();
var h = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(8,1).getValue();
var i = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(9,1).getValue();
var j = SpreadsheetApp.openById(ssId).getSheetByName("Comandes").getDataRange().getCell(10,1).getValue();
sendMessage(id,a)
sendMessage(id,b)
sendMessage(id,c)
sendMessage(id,d)
sendMessage(id,e)
sendMessage(id,f)
sendMessage(id,g)
sendMessage(id,h)
sendMessage(id,i)
return sendMessage(id,j)
}
//COMENÇAR AMB EL BOT
if (pp== '/start'){
var a = 'Comença amb la gestió de la comunitat, si necessites ajuda usa la comanda /help';
return sendMessage(id,a)
}
//INTRODUIR PROPIETARI
if (pp == '/propietat') {
sheet1.appendRow([sp,tp,qp]);
return sendMessage(id,'Propietari identificat!')
}
//CANVI DE PROPIETARI
if (pp == '/venut'){
var fila = parseInt(sp)+2;
sheet1.getDataRange().getCell(fila,2).setValue(tp);
return sendMessage(id, 'Nou propietari identificat!')
} else{
return sendMessage(id,"Comanda no reconeguda. Per conèixer les comandes introdueix /help en el xat.");
}
}

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