级联行删除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 数据保存原理详解