我使用Google Apps脚本编写脚本来编辑邮件列表的Google表格。我希望能够浏览所有行并使用' BOUNCED'删除任何行。 ' ERROR'或者' NO_RECIPIENT'在一个特定的细胞中。
我遇到的问题是For Loop
使用方括号[ ]
来指定行和列,它们将0
的第一行编入索引。 deleteRows()
操作使用弯曲括号,将第一行索引为1.因此,我无法删除正确的行。
如果我编程deleteRow(i)
,它会删除For loop
正在测试的行之后的行。如果我编程deleteRow(i+1)
,它会在第一次删除正确的行,但随后会删除以下行。请参阅下面的代码:
function cleanUp() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getDataRange().getValues();
for ( var i = 1; i < 30; i++) {
if (data[i][9] === 'ERROR' || data[i][9] === 'BOUNCED' || data[i][9] === 'NO_RECIPIENT') {
sheet.deleteRow(i+1);
}
}
}
答案 0 :(得分:0)
删除行后,它下方的行会改变它的位置。避免此问题的一种方法是以相反的顺序执行循环。
换句话说,而不是
for(var i = 1; i < 30; i++)
使用
for(var i = 29 ; i > 0; i--)