Google apps script 如何在应用程序脚本中附加带有sendMail功能的Google驱动器文件?
希望在应用程序脚本中将文件(pdfName)从Google Drive附加到sendMail函数。目前我没有使用下面的代码。其他一切都很完美。只是连接部分有问题Google apps script 如何在应用程序脚本中附加带有sendMail功能的Google驱动器文件?,google-apps-script,Google Apps Script,希望在应用程序脚本中将文件(pdfName)从Google Drive附加到sendMail函数。目前我没有使用下面的代码。其他一切都很完美。只是连接部分有问题 function send(formObj) { var to = formObj.email; var body = formObj.body; var sheetName = "POTemplate"; var sourceSpreadsheet = SpreadsheetApp.getActive(); var
function send(formObj) {
var to = formObj.email;
var body = formObj.body;
var sheetName = "POTemplate";
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var poNo = sourceSheet.getRange("b2").getValue();
var pdfName = "Sample PO Hi Eric " + poNo;
var subject = poNo + " Good morning, Eric";
var attach = DriveApp.getFilesByName(pdfName);
MailApp.sendEmail(to, subject, body, {attachments:[attach]});
}
根据,
attachments
参数需要一个BlobSource[]
()。但是,getFileByName()返回一个。您需要为MailApp提供实现的任何文件类型
因此,要澄清的主要问题是,您正在尝试为sendMail提供一个文件列表(以FileIterator的形式),而不仅仅是一个文件
因此,类似这样的方法应该有效:
function send(formObj) {
var to = formObj.email;
var body = formObj.body;
var sheetName = "POTemplate";
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var poNo = sourceSheet.getRange("b2").getValue();
var pdfName = "Sample PO Hi Eric " + poNo;
var subject = poNo + " Good morning, Eric";
var listOfFiles = DriveApp.getFilesByName(pdfName); //returns FileIterator of files that match name given.
if(listOfFiles.hasNext()){ //We should check if there is a file in there and die if not.
var file = listOfFiles.next(); //gets first file in list.
MailApp.sendEmail(to, subject, body, {attachments:[file]});
}else{
console.log("Error no file in listOfFiles. Email not sent.");
}
}
编辑:我刚刚做了一些测试,看起来对于PDF来说,getBlob()不是必需的,所以我已经从代码中删除了它 我想应该是
listofFiles.next().getBlob()
谢谢,杰克,我不确定,因为我以前没有在PDF中使用过它!我已经更新了我的答案,我收回了。似乎Google文件
是一个有效的blob源哈哈,是的,我也检查过了。