无效的参数:MailApp中的附件

时间:2019-10-28 09:54:23

标签: google-apps-script

我正在尝试自动发送从驱动器获取的文档附件的邮件

 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 :(得分:0)

如您在官方文档中所见,DriveApp.getFilesByName返回一个FileIterator。这不是有效的附件。

要获取该名称的文件,必须链接方法next()。因此,您必须更改此设置:

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

对此:

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

其背后的原因是,您的云端硬盘中可以包含许多具有相同名称的文件,因此,如果要发送特定文件,则可能更喜欢使用getFileById来查找具有特定ID的文件(id是唯一的)。

如果您要发送的文件共享相同的名称,则可以这样修改代码:

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

希望对您有帮助。