См. Мою функцию ниже. Я успешно выполнил этот код несколько раз. Я установил триггер, и он тоже сработал пару раз. Я начал чувствовать себя довольно хорошо, поэтому я хотел начать использовать эту функцию в других отчетах. Я настроил его как минимум на 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);// Удалить преобразованный файл . Это позволит выполнить код;Однако я не могу сделать это для каждого файла. Итак, я определил, что проблема заключается в следующем. Преобразованный файл должен быть удален. Если мы не удалим, я не смогу запустить код для нескольких файлов, потому что есть конфликт с преобразованным идентификатором. Который я уверен, что это коренная проблема, независимо от того, пытаемся ли мы удалить файл. Надеюсь, кто-нибудь может помочь мне решить эту проблему. Я не знаю, имеет ли смысл переименовывать каждый файл, а затем попытаться удалить его.