Избегайте ошибки тайм-аута UrlFetchApp в конвертации Excel скриптов Google - PullRequest
1 голос
/ 06 января 2020

Предыдущие сообщения StackOverflow сообщают, что UrlFetchApp завершает работу после превышения минуты времени выполнения. Это произошло со мной и влияет на мою программу. Эта программа автоматически преобразует электронную таблицу в файл Excel в качестве резервной копии и для сохранения данных. В электронной таблице много данных, поэтому время ожидания истекло. Каковы мои альтернативные решения для этой программы? Моя электронная таблица Google не очень большая и не соответствует максимальному порогу листов Google, поэтому нет необходимости в очистке данных.

function downloadSpreadSheet(){
  var spreadsheet_id =  "INSERT_ID_HERE";    //spreadsheet_id is the id of the google sheet, found in URL
  var ss = SpreadsheetApp.openById(spreadsheet_id);
  var now = new Date();

  var driveFolder = 'Dispatch Backup';                                     //driveFolder is the name of the destination folder on Google Drive
  var newFilename = 'Exported ' + (now.getMonth()+1) + '-' + now.getDate() + "-" + now.getYear();  //newFilename is the name of the .xlsx file to be written out
  var folder = DriveApp.getFoldersByName(driveFolder);                     //folder is a collection of all folders in the user's Drive with that name


  var params = {                                                           //params are the parameters used to grant authority to copy and save the new file
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions: true
  };


  //url is html around the spreadsheet ID that converts the sheet into Excel format
  var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key="+spreadsheet_id+"&exportFormat=xlsx";
  var doc = UrlFetchApp.fetch(url, params).getBlob();   //TIMES OUT HERE                                 //doc contains the converted sheet data

  //finds the location of driveFolder or creates one if not present
  if (folder.hasNext()) {
    folder = folder.next();
  } else {
    folder = DriveApp.createFolder(driveFolder);
  }

  //Creates a file in the root of the user's Drive from a given Blob of arbitrary data.
  file= folder.createFile(doc);
  //Sets the name of the File.
  if (newFilename != "")
          file.setName(newFilename)

}

Любая помощь или совет приветствуется. Спасибо.

1 Ответ

0 голосов
/ 06 января 2020

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

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