我正在尝试自动发送从驱动器获取的文档附件的邮件
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
});
错误:参数无效:附件
答案 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
希望对您有帮助。