级联行删除javascript

Posted

技术标签:

【中文标题】级联行删除javascript【英文标题】:cascading row deletion 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 --
        
      
    
  


提前感谢您的帮助。

【问题讨论】:

你没有在你的函数中定义date2 在开头定义var date2 = new Date(); 不要犹豫分享样本/n'hésite pas à partager un fichier simplifié 这能回答你的问题吗? Google Spreadsheets script to delete any rows where a string is found 【参考方案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--)

【讨论】:

非常感谢您的帮助,我将在本周末继续努力

以上是关于级联行删除javascript的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Core 数据保存原理详解

Entity Framework Core 数据保存原理详解

JavaScriptJavaScript基础

JavaScriptJavaScript基础

javascriptjavascript常用函数大全

javascriptJavaScript数组常用方法