Google sheet lire et envoyer les données

bonjour, peut-on envoyer et lire les données dans google sheets avec le même bouton ?

Yes, if you add a separate Spreadsheet component for the update, and have its completion event initiate the read.

est ce qu'il y a un exemple ou un tuto ?

les informations que vous m'avez envoyer sont pour uniquement lire , mais je compte lire, écrire et modifier la google sheet. Donc ça ne m'aide pas beaucoup !

That is not the case, there are example for read and write.

Given you are already using google apps script, you can write a script function in which you can write data, then return a read of the sheet in one go.

oui c'est un exemple que j'aimerais avoir, et oui j'ai déjà un script

For example:

var ss = SpreadsheetApp.openById('SPREADSHEET ID HERE');
var sh = ss.getSheetByName('SHEETNAME HERE');

doPost(e) {
  if (func = "writeRead" ) {
    sh.AppendRow([e.parameter.data]);
    SpreadsheetApp.flush(); //ensures data is written to sheet before next action
    rng = sh.getDataRange().getValues();
    return ContentService.createTextOutput(JSON.stringify(rng));
  }
}

ok j'avais fais ça , c'est pas correct ? :

else if (e.parameter.func == "report") {
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 transmission = e.parameter.transmission ;
sh.appendRow([nom,date,repas,change,sieste,soins,transmission]);
return ContentService.createTextOutput("validé");
}

else if (e.parameter.func == "readreport") {
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 transmission = e.parameter.transmission ;
var ref = sh.getRange(parseInt(e.parameter.nom)+1,1,1,rg[0].length). getValues();
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}

That would require two separate calls to the script. As with my example, combine both of those functions to return the data after you have written it.

oui effectivement votre exemple simplifie le script, pais par contre comment placez vous les blocs alors ? mon but c'est de lire et ècrire en cliquant sur le même bouton.

This ?

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 transmission = e.parameter.transmission ;

  sh.appendRow([nom,date,repas,change,sieste,soins,transmission]);
  SpreadsheetApp.flush();
  var ref = sh.getRange(parseInt(nom)+1,1,1,rg[0].length). getValues();

  return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}

merci de m'avoir corrigé le script
j'avais fais ça avec les blocs, je pense que ce n'est pas correct maintenant

pouvez vous m'aidez pour les blocs par rapport au script ci dessus ? merci,
est ce que je dois juste changer la func = writeReadReport à la place de la func=report au niveau du bouton22

This

should do it, but you need to change:

func=report

to

func=writeReadReport

and probably your reponse value for when the data is returned

if using this in your 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 transmission = e.parameter.transmission ;

  sh.appendRow([nom,date,repas,change,sieste,soins,transmission]);
  SpreadsheetApp.flush();
  var ref = sh.getRange(parseInt(nom)+1,1,1,rg[0].length). getValues();

  return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}

j'ai essayé mais je n'arrive pas , quand je clik sur le bouton22 j'ai mes données dans la sheet mais je n'arrive pas à lire les données, pouvez vous m'aider ?
voilà mes blocs

voilà mon script complet

function doGet(e) {

var ss = SpreadsheetApp.getActive();
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);
}
else 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 transmission = e.parameter.transmission ;
sh.appendRow([nom,date,repas,change,sieste,soins,transmission]);
SpreadsheetApp.flush();
var ref = sh.getRange(parseInt(nom)+1,1,1,rg[0].length). getValues();
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);

}
}

image

:question:

je l'ai supprimé et j'ai un message d'erreur =
The operation select list item cannot accept the arguments: , ["WriteReadReport"], [1]
Note: Vous n'allez pas voir une autre erreur rapportée pour 5 secondes.

voilà mes blocs

d66ce2a2ff8ac5d7785019b56fb4018ea873f9ba_2_610x500

Please explain how it is possible for variable response to equal the text 'WriteReadReport' and also be a list with items 1,2,3,4,... ?

Maybe you were thinking of some other variable?

il faut que je créé une variable pour chaque label (nom, date, repas,......) ?
je suis débutante