@EastJesus

Превышено максимальное время выполнения Google Script, как решить?

Всем добрый вечер, с помощью скрипта хочу скопировать папки на гугл диске, спустя время выдает ошибку, что превышено максимальное время выполнения скрипта. Можно увеличить это время или продолжить с того места, где начал? Сам код:

function start() {

  var sourceFolder = "Product";
  var targetFolder = "2";

  var source = DriveApp.getFoldersByName(sourceFolder);
  var target = DriveApp.createFolder(targetFolder);

  if (source.hasNext()) {
    copyFolder(source.next(), target);
  }

}

function copyFolder(source, target) {

  var folders = source.getFolders();
  var files   = source.getFiles();

  while(files.hasNext()) {
    var file = files.next();
    file.makeCopy(file.getName(), target);
  }

  while(folders.hasNext()) {
    var subFolder = folders.next();
    var folderName = subFolder.getName();
    var targetFolder = target.createFolder(folderName);
    copyFolder(subFolder, targetFolder);

  }  

}
  • Вопрос задан
  • 3374 просмотра
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Ваш же вопрос тут Максимальное время выполнения скрипта Google Script

К тому же не ведете переписку по другим вопросам.

Вы не можете преодолеть пердел исполнения в 6 минут. Для того, чтобы получить результаты поиска при повторном запуске скрипта, вы должны сохранить во внешнем хранилище значение токена, который действет неделю.

if (continuationToken == null) {
  var files = DriveApp.getFiles();
} else {
  var files = DriveApp.continueFileIterator(continuationToken);
}
где continuationToken заранее получен и извлечен из внешнего хранилища.

if(files.hasNext()){
  var continuationToken = files.getContinuationToken();

Для автоматического перезапуска скрипта вы должны создавать триггеры времени.

Чтобы представить всю масштабность задачи, можете взглянуть на готовое приложение для копирования Диска ericyd/gdrive-copy

Также существует несколько сниппетов и библиотек, которые позволяют "продлить" исполнение тем же методом, который я описал выше.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы