Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

114
Visualizações
cascading row deletion javascript

I start in the programming and in the google sheet folder I would like to delete the lines after 60 days according to the date column L (12). the program works but as soon as a line is deleted, all the other lines are deleted. find below my code on google app script.

//trouver le nom du classeur
  var date1 ; 
  var date2 = new Date();
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var couleur ;
  var feuilles = classeur.getSheets();
  // for (var i=0 ; i<sheets.length ; i++) out.push( [ sheets[i].getName() ] )

//trouver le nombre de feuilles dans le classeur ???


 
//pour chaque feuille, il faut
//pour chaque ligne, étudier la cellule L
//si vide ou < 31 alors rien
//si >= effacer la ligne 
  
function coloriage() {
  for (var i=0 ;i<feuilles.length ; i ++) {
    var feuille = feuilles[i] ;
    var transports = feuille.getDataRange();
    var donnees = transports.getValues();    
    for (var ligne = 6 ; ligne < donnees.length ; ligne++) {        
      date1 = donnees[ligne][11]; 
      if (date1 != "") {
        // différence de jours
        var jours = Math.round((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24));
        //Logger.log("ligne= "+ligne+ " date1= "+date1+" jours= "+jours);
        if (jours < 40) {
          if (jours<20) { couleur = "#fff" ; }
          if ((jours>=20)&&(jours<30)) { couleur = "#fd0" ; }
          if ((jours>=30)&&(jours<40)) { couleur = "#f75" ; }
          feuille.getRange(ligne+1,1,1,12).setBackground(couleur);
          }
        else { 
        feuille.deleteRows(ligne+1,1)
        Logger.log("ligne "+(ligne+1)+" supprimée ; nb de jours "+jours);
        ligne --
        }
      }
    }
  }
}

Thank you in advance for your help.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

You have a loop with line, and inside the loop you affect the value of line ligne -- ... weird. If you want to remove rows, reverse your loop as follows

for (var ligne = donnees.length-1 ; ligne >= 6 ; ligne--)
about 4 years ago · Juan Pablo Isaza Relatório

0

You can also simply remove the ligne -- instruction as whenever the code ends up on the else branch, it creates an infinite loop and all the rows end up being deleted.

Therefore, your else will look simply like this:

else { 
   feuille.deleteRows(ligne+1,1);
   Logger.log("ligne "+(ligne+1)+" supprimée ; nb de jours "+jours);
}
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda