我希望使用下面的代码删除给定电子表格的行,但是收到以下错误:" TypeError:无法读取属性" 9"来自undefined。"在测试For loop
并将其设置为i = 20
时,代码可以正常运行,但是i = data.length
会导致错误。有什么想法是什么问题?感谢
function cleanUp() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getDataRange().getValues();
for ( var i = data.length ; i > 0; i-- ) {
if (data[i][9] === 'ERROR' || data[i][9] === 'BOUNCED' || data[i][9] === 'NO_RECIPIENT') {
sheet.deleteRow(i+1);
}
}
}
答案 0 :(得分:0)
感谢上述评论中的@ASDFGerte,我发现嵌套在data[i]
循环中的if
语句中的问题是for
。这基本上返回data[data.length]
未定义。相反,这完美地运作:
for ( var i = data.length-1 ; i > 0; i-- ) {
if (data[i][9] === 'ERROR' || data[i][9] === 'BOUNCED' || data[i][9] === 'NO_RECIPIENT' || data[i][9] === 'UNSUBSCRIBED') {
sheet.deleteRow(i+1);
}
}