Google Apps Script - Как разорвать цикл, чтобы предотвратить сообщение об ошибке - PullRequest
0 голосов
/ 30 мая 2018

У меня есть приведенный ниже скрипт для архивирования строк с одного листа на другой, если выполняются некоторые условия (столбец 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: Невозможно прочитать свойство "0" из неопределенного.(строка 42, файл «Скрипт архивирования»)

Я полагаю, что это все еще пытается циклически пройти и ничего не найти, что я надеялся, что перерыв исправит, но это не так.

Кто-нибудь может предложить исправление?

1 Ответ

0 голосов
/ 30 мая 2018

Если кому-то интересно, исправление должно было измениться.

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

на

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

Спасибо за это LGSon.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...