TypeError:无法读取属性" 9"来自undefined

时间:2018-05-14 22:40:40

标签: javascript google-apps-script

我希望使用下面的代码删除给定电子表格的行,但是收到以下错误:" 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);
    }
  }
}

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);
 }
}