Spreadsheet.App.openById перестал работать без изменений в коде или файле - PullRequest
1 голос
/ 31 октября 2019

См. Мою функцию ниже. Я успешно выполнил этот код несколько раз. Я установил триггер, и он тоже сработал пару раз. Я начал чувствовать себя довольно хорошо, поэтому я хотел начать использовать эту функцию в других отчетах. Я настроил его как минимум на 2 других файла, и они успешно запустились вручную и с триггерами дважды, прежде чем перестали работать. Мой исходный файл выполнял этот код более месяца с триггером и ни разу не перестал работать, пока другие файлы не увидят его. По иронии судьбы, все это было 29.10.199, поэтому я не знаю, сделал ли Google какие-то изменения. Я не знаю, связан ли его сценарий приложения, или я мог бы уточнить свой код, чтобы заставить его работать.

Я получаю эту ошибку: Документ 1eQ0uewvBDHVu66fydr76BHqtRJiGUkxtVAVFrkvRQR8 отсутствует (возможно, он был удален, или у вас нет прав на чтение?). Конечно, для каждого файла и каждый раз, когда я запускаюфункция, идентификатор файла изменяется, так как я получаю новый отчет из своего электронного письма каждый день. Поэтому я предполагаю, что я могу использовать некоторые изменения в выделенном ниже разделе кода ...

function getCSV() {
  var threads = GmailApp.search('in:inbox from:"jreport_noreply@datapipe.mediaspectrum.net" subject:"Open SRs"');
  var messages = threads[0].getMessages();
  var len = messages.length;
  var message=messages[len-1] //get last message
  var attachments = message.getAttachments(); // Get attachment of first message

  var xlsxBlob = attachments[0]; // Is supposes that attachments[0] is the blob of xlsx file.
  var convertedSpreadsheetId = Drive.Files.insert({mimeType: MimeType.GOOGLE_SHEETS}, xlsxBlob).id;
  var sheet = SpreadsheetApp.openById(convertedSpreadsheetId).getSheets()[0]; // There is the data in 1st tab.
  var data = sheet.getDataRange().getValues();
  Drive.Files.remove(convertedSpreadsheetId); // Remove the converted file.

  var sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/18vpXXAuuIfJqww8EoL07dqHSGGHaV3IGRMUCcJz1t40/").getSheetByName("rawdata");
  sheet.clearContents();
  var range = sheet.getRange(1, 1, data.length, data[0].length);
  range.setValues(data);
}

ОБНОВЛЕНИЕ 11.4.19 - Я восстановил версию своего проекта до 10.29, и все еще получаю ту же ошибку.

Обновление 11.11.19 - Я удалил Drive.Files.remove (convertSpreadsheetId);// Удалить преобразованный файл . Это позволит выполнить код;Однако я не могу сделать это для каждого файла. Итак, я определил, что проблема заключается в следующем. Преобразованный файл должен быть удален. Если мы не удалим, я не смогу запустить код для нескольких файлов, потому что есть конфликт с преобразованным идентификатором. Который я уверен, что это коренная проблема, независимо от того, пытаемся ли мы удалить файл. Надеюсь, кто-нибудь может помочь мне решить эту проблему. Я не знаю, имеет ли смысл переименовывать каждый файл, а затем попытаться удалить его.

1 Ответ

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

Мне удалось воспроизвести вашу проблему. Я создал ошибку в трекере публичных проблем Google. Вы можете следить за статусом вопроса здесь: https://issuetracker.google.com/issues/144330142

...