Ошибка автоматического преобразования и удаления файлового типа (тайм-аут?) - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь создать скрипт, который будет конвертировать документы xls в папке в версии листов, а затем удалять версии xls. Сценарий работает, но, поскольку у меня в папке много файлов xls, я считаю, что он истекает из-за истечения срока действия: «Извините, произошла ошибка сервера. Пожалуйста, подождите немного и попробуйте снова» (строка 6,Ошибка файла "Convert XLS") через некоторое время после запуска. Есть ли способ выполнить это без тайм-аута сервера или что-то?

function convertXLS() {
  var folder = DriveApp.getFolderById('File_ID');
  var files = folder.getFilesByType(MimeType.MICROSOFT_EXCEL_LEGACY);
  while (files.hasNext()) {
    var file = files.next();
    Drive.Files.copy({}, file.getId(), {convert: true});
  }
 // while (files.hasNext()) {
//    Drive.Files.remove( file.getId());
//} 
  }

Обновление:

Итак, я перенастроил код так:

function importXLS(){
  var folder = DriveApp.getFolderById('File_ID');// you can also use a folder as starting point and get the files in that folder... use only DriveApp method here.
  var files = folder.getFilesByType(MimeType.MICROSOFT_EXCEL_LEGACY);
  while(files.hasNext()){
    var xFile = files.next();
    var name = xFile.getName();
    if (name.indexOf('.xls')>-1){ // this check is not necessaey here because I get the files with a search but I left it in case you get the files differently...
      var ID = xFile.getId();
      var xBlob = xFile.getBlob();
      var newFile = { title : name+'_converted',
                     key : ID,
                     'parents':[{"id":"File_ID"}]
                    }
      file = Drive.Files.insert(newFile, xBlob, {
        convert: true, 
      });
    }
  }
}

Но теперь он выдает мне эту ошибку - вызов API для drive.files. вставка не удалась с ошибкой: Внутренняя ошибка (строка 14, файл "Преобразовать XLS") "примерно через две минуты после запуска. Я не знаю, что делать: (

1 Ответ

0 голосов
/ 06 ноября 2019

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

Чтобы решить эту проблему, создайте функцию, которая преобразует и удаляет один файл, а затем запускайте его несколько раз.

Для этого вы будете использовать getFilesByType в сочетании с Advanced Drive Services с функцией Drive.files.insert с опциями {convert:true}.

Запускать его несколько раз можно с помощью триггера, основанного на времени, и / или вручную.

Поскольку вы будете получать файлы только определенного типа MIME, при запуске файлов XLS у вас не должно возникнуть проблем. .

Надеюсь, это поможет!

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