var ssId = "1d0176v9_8iFIaPGe3DjKUPCl3KdT4bt8NTICcwEwl1U"; // Identificador del full de càlcul function miraGenere(par){ var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Generes"); // Agafem el full var mida = sheet.getLastRow(); // Índex de la darrera filera var elem = sheet.getDataRange().getValues(); var trobat = 0; for(var j = 1; j < mida; j++){ var fil = elem[j]; // Agafem la filera var gen = fil[0]; // Agafem el gènere if(gen == par){ trobat = 1; } } if(trobat == 0){ var camp = new Array(1); // Valors per guardar a la taula camp[0] = par; sheet.appendRow(camp); } } function Gener(){ var sh = SpreadsheetApp.openById(ssId).getSheetByName("Llistat"); // Agafem el full var total = sh.getLastRow(); // Índex de la darrera filera var el = sh.getDataRange().getValues(); var filer = el[total - 1]; // Agafem la filera var llis = filer[2]; var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Generes"); // Agafem el full var mida = sheet.getLastRow(); // Índex de la darrera filera var elem = sheet.getDataRange().getValues(); var tot = +total - 1; llis = llis + "\n" + tot; for(var j = 1; j < mida; j++){ var fil = elem[j]; // Agafem la filera var gen = fil[0]; // Agafem el gènere llis = llis + "\n" + gen; } return llis; } function Cerca(info){ var autor = info[0].toLowerCase(); var titol = info[1].toLowerCase(); var index = +info[2]; var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Llistat"); // Agafem el full var mida = sheet.getLastRow(); // Índex de la darrera filera var elem = sheet.getDataRange().getValues(); var llis = ""; var c_full = 1; // Comptador de línies del full var c_res = 0; // Comptador de resultats while(c_full < mida){ var fil = elem[c_full]; // Agafem la filera var aut = fil[1].toLowerCase(); var tit = fil[2].toLowerCase(); var toca = 0; if((fil[6] == 0) || ((fil[6] == 1) && (info[3] == 1))){ if((tit.indexOf(titol) >= 0) && (titol.length > 0) && (autor.length == 0)){ toca = 1; } if((aut.indexOf(autor) >= 0) && (autor.length > 0) && (titol.length == 0)){ toca = 1; } if((tit.indexOf(titol) >= 0) && (aut.indexOf(autor) >= 0) && (autor.length > 0) && (titol.length > 0)){ toca = 1; } } if(toca == 1){ c_res++; if((c_res >= index) && (c_res < index+5)){ llis = llis + "\n"; for(var j = 0; j < fil.length; j++){ if(j > 0){ llis = llis + "^"; } llis = llis + fil[j]; } } } c_full++; } llis = c_res + llis; return llis } function Llista(info){ var index = +info[1]; var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Llistat"); // Agafem el full var mida = sheet.getLastRow(); // Índex de la darrera filera var elem = sheet.getDataRange().getValues(); var llis = ""; var c_res = 0; // Comptador de resultats if(info[0] == "d"){ var c_full = 1; // Comptador de línies del full while(c_full < mida){ var fil = elem[c_full]; // Agafem la filera if((fil[6] == 0) || ((fil[6] == 1) && (info[2] == 1))){ c_res++; if((c_res >= index) && (c_res < index+5)){ llis = llis + "\n"; for(var j = 0; j < fil.length; j++){ if(j > 0){ llis = llis + "^"; } llis = llis + fil[j]; } } } c_full++; } } else { var c_full = mida - 1; // Comptador de línies del full while(c_full >= 1){ var fil = elem[c_full]; // Agafem la filera if((fil[6] == 0) || ((fil[6] == 1) && (info[2] == 1))){ c_res++; if((c_res >= index) && (c_res < index+5)){ llis = llis + "\n"; for(var j = 0; j < fil.length; j++){ if(j > 0){ llis = llis + "^"; } llis = llis + fil[j]; } } } c_full--; } } llis = c_res + llis; return llis } function doPost(e){ var Accio = e.parameter.Accio; if(Accio == "Generes"){ var llistat = Gener(); return ContentService.createTextOutput(llistat); } if(Accio == "Modif"){ var shh = SpreadsheetApp.openById(ssId).getSheetByName("Llistat"); // Agafem el full var rang = shh.getLastRow(); // Índex de la darrera filera var cont = shh.getDataRange().getValues(); var camp = new Array(7); // Valors per guardar a la taula miraGenere(e.parameter.Genere); camp[0] = e.parameter.Autor; camp[1] = e.parameter.Titol; camp[2] = e.parameter.Genere; camp[3] = e.parameter.Editorial; camp[4] = e.parameter.Any; camp[5] = e.parameter.Esborrat; camp[6] = e.parameter.Comentaris; var valu = new Array(1); // Matriu de dades a escriure valu[0] = camp; // Converteix el vector en una matriu d'una filera i dues columnes var trobat = 0; var pos = 1; while((trobat == 0) && (pos < rang)){ var filact = cont[pos]; // Agafem la filera if(filact[0] == e.parameter.Id){ trobat = 1; } pos++; } var resposta = 'Hi ha hagut un problema'; if(trobat == 1){ var rangeVal = shh.getRange(pos, 2, 1, 7); rangeVal.setValues(valu); // Guarda els valors a les caselles, substituïnt els anteriors resposta = 'El llibre "' + camp[1] + '" ha estat modificat'; } return ContentService.createTextOutput(resposta); } if(Accio == "Afegir"){ var sh = SpreadsheetApp.openById(ssId).getSheetByName("Llistat"); // Agafem el full var rang = sh.getLastRow(); // Índex de la darrera filera var dades = sh.getDataRange().getValues(); var filera = dades[rang - 1]; // Agafem la darrera filera var IdMax = filera[0]; // Màxim identificador, el que hi ha a la darrera filera var camps = new Array(8); // Valors per guardar a la taula miraGenere(e.parameter.Genere); camps[0] = IdMax + 1; camps[1] = e.parameter.Autor; camps[2] = e.parameter.Titol; camps[3] = e.parameter.Genere; camps[4] = e.parameter.Editorial; camps[5] = e.parameter.Any; camps[6] = e.parameter.Esborrat; camps[7] = e.parameter.Comentaris; sh.appendRow(camps); var resposta = 'El llibre "' + camps[2] + '" ha estat afegit'; return ContentService.createTextOutput(resposta); } if(Accio == "Cercar"){ var dades = new Array(4); dades[0] = e.parameter.Autor; dades[1] = e.parameter.Titol; dades[2] = e.parameter.Index; dades[3] = e.parameter.Esborrats; var respo = Cerca(dades); return ContentService.createTextOutput(respo); } if(Accio == "Llista"){ var dades = new Array(4); dades[0] = e.parameter.Sentit; dades[1] = e.parameter.Index; dades[2] = e.parameter.Esborrats; var respo = Llista(dades); return ContentService.createTextOutput(respo); } var resultat = "Acció incorrecta" + "\n"; return ContentService.createTextOutput(resultat); }