如果满足某些条件(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/