【问题标题】:cascading row deletion javascript级联行删除javascript
【发布时间】:2021-11-12 03:31:32
【问题描述】:

我从编程开始,在 google sheet 文件夹中,我想根据日期列 L (12) 在 60 天后删除行。该程序可以工作,但是一旦删除了一行,所有其他行都将被删除。 在我的谷歌应用脚​​本代码下方找到。

//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 --
        }
      }
    }
  }
}

提前感谢您的帮助。

【问题讨论】:

标签: javascript google-apps-script google-sheets delete-row


【解决方案1】:

您也可以简单地删除 ligne -- 指令,因为只要代码在 else 分支上结束,它就会创建一个无限循环并且所有行最终都会被删除。

因此,您的else 将如下所示:

else { 
   feuille.deleteRows(ligne+1,1);
   Logger.log("ligne "+(ligne+1)+" supprimée ; nb de jours "+jours);
}

【讨论】:

    【解决方案2】:

    你有一个带有 line 的循环,在循环内你会影响 line ligne -- 的值......很奇怪。如果要删除行,请按如下方式反转循环

    for (var ligne = donnees.length-1 ; ligne >= 6 ; ligne--)
    

    【讨论】:

    • 非常感谢您的帮助,我将在本周末继续努力
    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2011-06-29
    • 2010-10-05
    • 2011-09-21
    • 2012-02-27
    • 2012-09-08
    相关资源
    最近更新 更多