Вложения в скрипте Google Apps
У меня возникают проблемы, когда я помещаю несколько вложений в скрипт Google Apps для отправки по электронной почте.
Часть кода, которая это делает,
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF);
var file2 = DriveApp.getFilesByName("test.pdf");
DriveApp.getFileById(doc.getId()).setTrashed(true);
emails.forEach(function(email) {
MailApp.sendEmail(email, "Attachments - " + rows[0][0], "Hello!", {
name: 'Good Practices',
attachments: [file.getAs(MimeType.PDF), file2]
});
Но когда я запускаю это, у меня возникает такая проблема:
Исключение: недопустимый аргумент: вложения (строка 151, файл «Электронная почта»).
У меня есть файл .doc1, который заполняется, а затем конвертируется в PDF, и другой файл2, который уже является PDF.
Когда я запускаю только файл file1, я могу отправить электронное письмо, но когда я пытаюсь использовать file1 и file2, у меня возникает эта ошибка. Может кто знает, что может происходить?
Я запустил много других предложений, которые я прочитал здесь, в стеке, но ни одно из них не сработало.
Ответы
Объяснение:
Проблема в том, что file2
это не тип FILE, а объект класса FileIterator .
С другой стороны, он file1
относится к типу FILE и поэтому работает правильно.
Также рекомендуется перед отправкой электронного письма проверить, существует ли имя файла.
Решение:
function myFunction() {
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF); // this is a file
var folder = DriveApp.getFolderById(folderId); // put here the id of the folder
var file2 = folder.getFilesByName("test.pdf"); // this is a file iterator
DriveApp.getFileById(doc.getId()).setTrashed(true);
if (file2.hasNext() ) {
MailApp.sendEmail(emailAddress, "Attachments - " + rows[0][0], "Hello!",{
name: 'Good Practices',
attachments:
[
file1.getAs(MimeType.PDF),
file2.next().getAs(MimeType.PDF)
]
})};
}
Рекомендации:
- getFilesByName (имя)
- createFile