ERREUR avec la GOOGLE SHEET

j'ai fais ça mais ça ne fonctionne pas ?

else if ( e.parameter.func == "supprimer" ) {
var nom = e.parameter.nom;
var motdepasse = e.parameter.motdepasse;
var loginData = sheet.getDataRange().getValues();
for (var i = 0; i < loginData.length; i++ ) {
if ( nom == loginData[i][0] && motdepasse == loginData[i][1] ) {
msg = "supprimé";
sheet.deleteRow(parseInt(nom,motdepasse);
}
return ContentService.createTextOutput("compte supprimé");

You want to delete a user on the system.

Do similar to login, find the correct row in the data (you will need to add 1), then delete the row in the spreadsheet.

j'ai fais ça mais ça ne fonctionne pas ?

else if ( e.parameter.func == "supprimer" ) {
var nom = e.parameter.nom;
var motdepasse = e.parameter.motdepasse;
var loginData = sheet.getDataRange().getValues();
for (var i = 0; i < loginData.length; i++ ) {
if ( nom == loginData[i][0] && motdepasse == loginData[i][1] ) {
msg = "supprimé";
sheet.deleteRow(parseInt(nom,motdepasse));
}
return ContentService.createTextOutput("compte supprimé");

:question:

try:
sheet.deleteRow(i+1);

ça ne fonctionne pas , c'est peut être un problème de blocs ?

What doesn't work. You need to show errors or responseContent values.

je suis désolée je n'y arrive pas , je comprends pas ou afficher les erreurs !

It is even more difficult for anyone else to guess at why it doesn't work!

You need to learn how to debug your app / script / sheet in order to provide meaningful errors or issues here.

vous parlez du script ou des blocs ?

As said....

j'ai essayé de déboguer mo script et il m'affiche cette erreur au niveau de la ligne 7
if (e.parameter.func=="register")

Erreur TypeError: Cannot read properties of undefined (reading 'parameter')
doGet @ Code.gs:7

c'est bizarre ?

We do not know, you do not show the script.... (in full), or your relevant blocks

mon script complet

function doGet(e) {
 
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Sheet1"); 
  var sh = ss.getSheetByName("Sheet2"); 

  if ( e.parameter.func == "register" ) {
    var nom = e.parameter.nom ; 
    var motdepasse = e.parameter.motdepasse ;
    sheet.appendRow([nom,motdepasse]);
    return ContentService.createTextOutput("Nouveau compte"); 
  } 
  
  else if ( e.parameter.func == "testLogin" ) {
    var msg = "Information incorrecte";
    var nom = e.parameter.nom;
    var motdepasse = e.parameter.motdepasse;
    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 nom = e.parameter.nom; 
   var motdepasse = e.parameter.motdepasse;
   var loginData = sheet.getDataRange().getValues();
   for (var i = 0; i < loginData.length; i++ ) {
   if ( nom == loginData[i][0]  && motdepasse == loginData[i][1] ) {
        msg = "supprimé";  
   sheet.deleteRow(i+1);
   }
   return ContentService.createTextOutput("compte supprimé");
    }
  }

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

pour moi je ne vois pas de problème au script

mes blocs

You may need to uriEncode your textbox contents:

image

Also you can simplify your script:

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);
     }
   }
   return ContentService.createTextOutput(msg);
  }

  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é");
  }
}

Note, I changed this:
sheet.appendRow([nom,date,repas,change,sieste,soins,transmission]);
to this:
sh.appendRow([nom,date,repas,change,sieste,soins,transmission]);

ok pour le script du coup j'aurais une seconde feuille qui sera lié pour chaque utilisateur.
Mais pour uriEncoder je ne sais pas comment l'utiliser, ça règlera le problème pour supprimer le compte désiré ? je suis vraiment une débutante

Like this:

image

Do the same with your other urlGET procedures where you have textbox data.

ça fonctionne j'arrive à effacer la Sheet1 , mais pas la Sheet2 avec les données qui correspondent au nom enregistré, est ce que je dois ajouter sh.deleteRow(i+1); ?

You need to delete the user account details on Sheet1, and then delete their data on Sheet2 ?

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 = " account 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 = " report compte supprimé";  
          sh.deleteRow(i+1);
     }
   }
   return ContentService.createTextOutput(msg);
  }

merci vous m'avez beaucoup aidé

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.