Правильное использование DriveApp.continueFileIterator (continueationToken)

Я написал скрипт для перебора большого количества файлов в папке на Google Диске. Из-за обработки, которую я выполняю для этих файлов, она превышает максимальное время выполнения. Естественно, я написал в сценарий использование DriveApp.continueFileIterator (continueationToken): токен сохраняется в свойствах проекта и при запуске скрипта проверяет, есть ли токен, если он существует, он создает FileIterator из токена, если не он. начинается заново.

Я обнаружил, что, несмотря на то, что скрипт перезапускается с токеном продолжения, он все еще начинается с начала итерации, пытаясь снова обработать те же файлы, что приводит к потере времени для последующих выполнений. Я что-то упустил, как в команде или методе, чтобы начать с того места, где он остановился? Должен ли я обновлять токен продолжения на разных этапах во время цикла while (contents.hasNext ())?

Вот пример кода, уменьшенный, чтобы дать вам идею:

function listFilesInFolder() {
  var id= '0fOlDeRiDg';
  var scriptProperties = PropertiesService.getScriptProperties();
  var continuationToken = scriptProperties.getProperty('IMPORT_ALL_FILES_CONTINUATION_TOKEN');
  var lastExecution = scriptProperties.getProperty('LAST_EXECUTION');
  if (continuationToken == null) {
    // first time execution, get all files from drive folder
    var folder = DriveApp.getFolderById(id);
    var contents = folder.getFiles();
    // get the token and store it in a project property
    var continuationToken = contents.getContinuationToken();
    scriptProperties.setProperty('IMPORT_ALL_FILES_CONTINUATION_TOKEN', continuationToken);
  } else {
    // we continue to import from where we left
    var contents = DriveApp.continueFileIterator(continuationToken);
  }
  var file;
  var fileID;
  var name;
  var dateCreated;

  while(contents.hasNext()) {
    file = contents.next();
    fileID = file.getId();
    name = file.getName();
    dateCreated = file.getDateCreated();
    if(dateCreated > lastExecution) {
      processFiles(fileID);
    }
  }
  // Finished processing files so delete continuation token
  scriptProperties.deleteProperty('IMPORT_ALL_FILES_CONTINUATION_TOKEN');
  var currentExecution = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd HH:mm:ss");
  scriptProperties.setProperty('LAST_EXECUTION',currentExecution);
};

Ответы на вопрос(2)

Ваш ответ на вопрос