oui je lis les données déjà existantes et aprés je veux les modifier.
J'ai déjà le script qui fonctionne pour écrire (envoyer) et lire les données
voilà le script :
if (e.parameter.func == "WriteReadReport") {
var nom = e.parameter.nom ;
var date = e.parameter.date ;
var repas = e.parameter.repas ;
var change = e.parameter.change ;
var sieste = e.parameter.sieste ;
var soins = e.parameter.soins ;
var photo1 = e.parameter.photo1;
var photo2 = e.parameter.photo2;
var transmission = e.parameter.transmission ;
sh.appendRow([nom,date,repas,change,sieste,soins,photo1,photo2,transmission]);
SpreadsheetApp.flush();
var ref = [ ];
var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
j'ai le script seulement pour lire les données aussi :
if (e.parameter.func == "Read"){
SpreadsheetApp.flush();
var ref = [ ];
var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
donc j'utilise la fonction Read pour obtenir les données et je voudrais les modifier avec la fonction WriteReadReport
Given that it has already taken over 20 posts in this topic, and make very little progress, I decided it was going to be easier to provide you with an example:
function doGet(e) {
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rows = sh.getDataRange().getValues();
if (e.parameter.func == 'Modifier') {
var rowid;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var i=0;i<rows.length;i++) {
if ( e.parameter.index == rows[i][0] ) {
rowid = (i);
}
}
sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).setValues(data);
}
return ContentService.createTextOutput("Data in row " + rowid + " modified");
}
App Screenshot (with data to change):
After Modify button is pressed:
Notes:
Because I have a header row (titles) on my spreadsheet, and we have a +1 in the data setting line, we have to change the rowid in the script to rowid = (i);
voilà ce que je veux faire :
Le bouton2 me sert à lire les données que je veux modifier,
Le bouton22 me sert déjà à écrire et envoyer les données dans la sheet ainsi qu'à lire quand je suis sur un autre écran jusque là tout fonctionne, mais je voudrais modifier les données avec ce même bouton22 et ça ne fonctionne pas les données ne sont pas modifiées ,(elles sont ajoutés dans la sheet). Pouvez vous m'aider, est ce possible d'écrire/envoyer/lire et modifier avec le bouton22 ?
Voilà mes blocs :
function doGet(e) {
var ss = SpreadsheetApp.openById('1BSUDHn08h6YlrtgfeoQEVhjdvNp3rGPxZiTVq9r-bSY');
var sheet = ss.getSheetByName("Sheet1");
var sh = ss.getSheetByName("Sheet2");
var nom = e.parameter.nom ;
var motdepasse = e.parameter.motdepasse ;
var msg;
if ( e.parameter.func == "register" ) {
sheet.appendRow([nom,motdepasse]);
return ContentService.createTextOutput("Nouveau compte");
}
else if ( e.parameter.func == "testLogin" ) {
var msg = "Information incorrecte";
var loginData = sheet.getDataRange().getValues();
for ( var i = 0; i < loginData.length; i++ ) {
if ( nom == loginData[i][0] && motdepasse == loginData[i][1] ) {
msg = "connecté";
}
}
return ContentService.createTextOutput(msg);
}
else if ( e.parameter.func == "supprimer" ) {
var loginData = sheet.getDataRange().getValues();
for (var i = 0; i < loginData.length; i++ ) {
if ( nom == loginData[i][0] && motdepasse == loginData[i][1] ) {
msg = "compte supprimé";
sheet.deleteRow(i+1);
}
}
var reportData = sh.getDataRange().getValues();
for (var i = 0; i < reportData.length; i++ ) {
if ( nom == reportData[i][0] ) {
msg = " compte supprimé";
sh.deleteRow(i+1);
}
}
return ContentService.createTextOutput(msg);
}
if (e.parameter.func == "WriteReadReport") {
var nom = e.parameter.nom ;
var date = e.parameter.date ;
var repas = e.parameter.repas ;
var change = e.parameter.change ;
var sieste = e.parameter.sieste ;
var soins = e.parameter.soins ;
var photo1 = e.parameter.photo1;
var photo2 = e.parameter.photo2;
var transmission = e.parameter.transmission ;
sh.appendRow([nom,date,repas,change,sieste,soins,photo1,photo2,transmission]);
SpreadsheetApp.flush();
var ref = [];
var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "Read"){
SpreadsheetApp.flush();
var ref = [];
var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "Modifier"){
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rows = sh.getDataRange().getValues();
var rowid;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).setValues(data);
}
return ContentService.createTextOutput("Les données de " + rowid + " sont modifiées");
}
j'arrive à modifier les données dans la sheet mais j'ai un message d'erreur
Le script
if (e.parameter.func == "Modifier"){
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rows = sh.getDataRange().getValues();
var rowid;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).setValues(data);
}
return ContentService.createTextOutput("Les données de " + rowid + " sont modifiées");
}
If you want to return the values in the row you have just updated, then change your Modifier section of the script to this:
if (e.parameter.func == "Modifier"){
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rows = sh.getDataRange().getValues();
var rowid;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).setValues(data);
}
// updates the spreadsheet
SpreadsheetApp.flush();
// gets the row data
var row = sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).getValues();
// returns the row data
return ContentService.createTextOutput(JSON.stringify(row));
}
Then set your blocks in the reponse = Modifier section back to how you had them:
j'arrive à modifier les données dans la sheet mais quand je clik sur le bouton pour lire les données que j'ai modifiés j'ai un message d'erreur et je n'arrive pas à lire.
Dans les parenthèse du message d'erreur il y a les données
if (e.parameter.func == "Modifier"){
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rows = sh.getDataRange().getValues();
var rowid;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).setValues(data);
}
SpreadsheetApp.flush();
var row = sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).getValues();