Я создаю аддон для Google Sheets, который волонтерские клубы моей местной средней школы могут использовать, чтобы отслеживать часы волонтеров своих членов. Большая часть кода выполнена и работает очень хорошо, и в настоящее время я работаю над системой, которая отправит участнику электронную таблицу со списком всех событий добровольцев, которые они зарегистрировали. У меня есть GAS, создающая отдельную электронную таблицу, и затем посылаю электронное письмо с той отдельной электронной таблицей, приложенной в PDF. Когда электронное письмо получено, PDF-файл пуст, за исключением единственной пустой ячейки в левом верхнем углу страницы.
Я довольно новичок в GAS, но смог понять содержание довольно легко. Я пробовал только один метод отправки таблицы - с помощью .getAs (MimeType.PDF). Когда я изменил «PDF» на «GOOGLE_SHEETS», GAS вернул ошибку: «Объект Blob должен иметь ненулевые данные для этой операции». Я не совсем уверен, что такое объект Blob, и не нашел ни одного веб-сайта или видео, которые бы полностью его объяснили, поэтому я не уверен, как решить эту ошибку.
Мне кажется, у меня проблема с захватом файла, потому что он либо отправляет пустой PDF, либо возвращает ошибку, утверждая, что ему нужны "ненулевые данные".
function TigerMail()
{
var Drive = DriveApp;
var app = SpreadsheetApp;
var LOOKUP = app.getActiveSpreadsheet().getSheetByName("Student
Lookup");
var Name = LOOKUP.getRange("E1").getValue();
Name = Name + "'s Hours";
//app.openById(Name+"'s Hours");
var HOURS = app.create(Name);
var ESheet = HOURS.getSheets()[0];
var ROW = LOOKUP.getLastRow();
var arr = LOOKUP.getRange("D1:J"+ROW).getValues();
var cell = ESheet.getRange("A1:G"+ROW);
cell.setValues(arr);
////////////////////////////////////////////////////
var LOOKUP = app.getActiveSpreadsheet().getSheetByName("Student
Lookup");
var cell = LOOKUP.getRange("D1");
var Addr = cell.getValue();
var ROW = LOOKUP.getLastRow();
var file = Drive.getFilesByName(Name);
var file = file.next();
var FORMAT = file.getAs(MimeType.GOOGLE_SHEETS);
TigerMail.sendEmail(Addr, "Hours", "Attached is a list of all of the
events you have volunteered at:", {attachments: [FORMAT]} );
}
последние четыре строки, в которых происходят ошибки. Я считаю, что я неправильно понимаю, как .next () и .getFilesByName () работают.
(над строкой комментария: создание таблицы часов)
(ниже строки комментария: захват электронной таблицы и прикрепление ее к электронному письму)
Вот ссылка на Google Sheet:
https://docs.google.com/spreadsheets/d/1qlUfTWaj-VyBD2M45F63BtHaqF0UOVkwi04XwZFJ4vg/edit?usp=sharing