我列出了文件夹的所有PDF文件并将其发送到电子邮件中。 问题是我不知道如何附加多个文件。
这是我到目前为止所尝试的:将文件放入blob然后传递它。 其他尝试是将blob [0]和blob 1放入,如果有2个pdf文件,但它不起作用。
var folders = DriveApp.getFoldersByName(folderToScan);
var folder = folders.next();
var contents = folder.getFiles();
var blob = [];
var filesTextList = "";
// foreach file
for(var counter = 0;contents.hasNext();counter++)
{
file = contents.next();
var MimeType = file.getMimeType();
// filter PDF
if(file.getMimeType() == "application/pdf")
{
blob[counter] = file.getBlob();
// add file name to text
filesTextList += "\n" + file.getName();
}
}
MailApp.sendEmail(sender, subject, message,
{attachments: blob}
);
如果我只有1个blob文件,{attachments:blob [0]}正在运行,但它不是动态的
答案 0 :(得分:1)
sendEmail method的attachments
参数需要"要使用电子邮件发送的文件数组"。它们可以是File对象,你不必从它们中获取blob。
更重要的是,您的循环将创建一个包含未定义元素的数组,因为blob[counter]
仅在文件为PDF时被分配,但counter
的值无论如何都会增加。我不认为sendEmail会对此感到高兴。
使用while
循环和迭代器,以及push
方法将元素添加到数组中。一个完整的例子。
function emailatt() {
var contents = DriveApp.getFolderById("id here").getFiles();
var attachments = [];
while (contents.hasNext()) {
var file = contents.next();
if (file.getMimeType() == "application/pdf") {
attachments.push(file);
}
}
MailApp.sendEmail("user@example.com", "subject", "body", {attachments: attachments});
}
除此之外:当你知道你想要什么文件夹时,通过Id获取文件夹是最好的。首先使用getFoldersByName
,然后选择具有该名称的任何文件夹,这是一种不太健全的方法。