javascript - Google Apps 脚本 - 如何中断循环以防止出现错误消息

标签 javascript google-apps-script google-sheets

如果满足某些条件(G 列不为空,并且 A 列中的日期等于或早于 3 个月),我有以下脚本用于将行从一张纸存档到另一张纸。它将匹配的行追加到新工作表中,并从原始工作表中删除该行。

function Archiving() {

  var masterSS = SpreadsheetApp.getActiveSpreadsheet() || SpreadsheetApp.openById('sheetID');
  var responseSheet = masterSS.getSheetByName('responseSheetname');
  var archiveSheet = masterSS.getSheetByName('archiveSheetName');

  var responseData = responseSheet.getRange(2,1, responseSheet.getLastRow()-1, responseSheet.getLastColumn()).getValues();
  var lastRow = responseSheet.getLastRow();
  var today = new Date();
  for (var i = responseData.length-1; i < responseData.length; i--){
    var row = responseData[i];
    if (row[0] == "") {break;}
    if (row[6] != "") {
      var date = row[0];
      if (date != "" && ((today.getTime() - date.getTime()) > 7776000000)) {
        Logger.log(date)
        archiveSheet.appendRow(responseData[i]);
        responseSheet.deleteRow(i+2);
      }
    }
  }
}

它正在工作,但是,当它完成归档时,它会抛出以下错误:

TypeError: Cannot read property "0" from undefined. (line 42, file "Archiving Script")

我之所以这样想,是因为它仍在尝试循环,但什么也没找到,我本来希望中断能够解决这个问题,但事实并非如此。

有人可以提出修复建议吗?

最佳答案

如果有人感兴趣,解决办法就是改变。

if (row[0] == "") {break;}

if (!row || row[0] == "") {break;}

谢谢 LGSon。

关于javascript - Google Apps 脚本 - 如何中断循环以防止出现错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50603576/

相关文章:

google-apps-script - 在如此简单的函数上得到 'JavaScript engine reported an unexpected error'

javascript - AJAX 请求多个链接

javascript - 如何使用 XMLHttpRequest() 将内容转发到日志服务器?

javascript - 如何启用 Greasemonkey 的 "Find Updates"上下文菜单

javascript - 带有 Google Apps 脚本的 JQuery Mobile

javascript - Google Sheets v4 更新效果 JSON 端点数据? 2021 年 6 月 8 日关闭

javascript - AngularJS 多个 http 请求

javascript - 如何测试 Google 电子表格脚本中范围参数的类型?

regex - 如何在 Google 电子表格中使用 RegExReplace

google-apps-script - BigQuery 与 Google 电子表格错误 'Required parameter is missing'