Неверный аргумент: вложения в MailApp - PullRequest
1 голос
/ 28 октября 2019

Я пытаюсь автоматизировать отправку почты с вложением документа, который извлекается с диска

 var folder = DriveApp.getFolderById('link of drive folder');
  var file = DriveApp.getFilesByName('name of doc');

  MailApp.sendEmail({
    to: to_email,
    cc: cc_email,
    subject: "Document",
    attachments: [file],
    body: "Requires HTML",
    htmlBody: body
  });

ошибка: неверный аргумент: вложения

1 Ответ

0 голосов
/ 29 октября 2019

Как видно из официальной документации, DriveApp.getFilesByName возвращает FileIterator . Это недопустимое вложение.

Чтобы получить файл с таким именем, вам нужно связать метод next () . Таким образом, вам придется изменить это:

var file = DriveApp.getFilesByName('name of doc');

На это:

var file = DriveApp.getFilesByName('name of doc').next();

Причина этого заключается в том, что вы можете иметь много файлов с одинаковым именем на диске, так что еслиВы хотите отправить определенный файл, который вы можете использовать getFileById , который ищет файл с определенным идентификатором (идентификаторы уникальны).

Если вы хотите отправить всеВ файлах с одинаковыми именами вы можете изменить свой код следующим образом:

var files = DriveApp.getFilesByName(file_name);
var attachments = []
while (files.hasNext()) {
  var file = files.next();
  attachments.push(file);
}
MailApp.sendEmail({
  to: to_email,
  cc: cc_email,
  subject: "Document",
  attachments: attachments,
  htmlBody: body
});

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

htmlBody: body

Надеюсь, это вам поможет.

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