使用Invalid argument: fileName(...)
时出现错误MailApp.sendEmail(msg)
。
我已阅读此discussion。根据{{3}},MailApp.sendEmail({attachments: BlobSource[],...}
期望Blob源数组。我在数组和单个Blob源(即没有[]
的情况下)都尝试过此操作,但得到了相同的错误。
function sendEmailNotifications(payroll){
debug && Logger.log('sending email notifications')
var emailTmpltId = PropertiesService.getScriptProperties().getProperty('EMAIL_TEMPLATE')
var messageTmplt = DocumentApp.openById(emailTmpltId).getBody().getText() // get the template text
// Iterate through payroll and send emails.
payroll.forEach(function(p){
debug && Logger.log('starting email for '+p['EMPLOYEE_EMAIL'])
var msg = {
to: p['EMPLOYEE_EMAIL'],
subject: p['PAY_DATE']+': Pay stub ['+p['EMPLOYEE_CODE']+']',
body: emailMerge(messageTmplt, p),
attachments: [DriveApp.getFileById(p['DOC_ID']).getBlob()], // per docs expects BlobSource[]
}
debug && Logger.log('sendEmailNotification: '+JSON.stringify(msg))
MailApp.sendEmail(msg) // Invalid argument: fileName
})
}
请注意,调试日志显示msg.attachments = {}
接受的数据正确,并且DOC_ID
指向有效的PDF文件。
还请注意,下面的测试代码使用调试日志中的p['DOC_ID']
返回有效的文件名:
function testDocId() {
var id = '1xh0HBWaANnFQ_AHbT6jc7pQWPbMQ9WXt'
Logger.log('testDocId: document name: '+DriveApp.getFileById(id).getName())
}
我在做什么错了?
答案 0 :(得分:1)
感谢@ |'-'| ..
这让我无路可走...原来我在文件名中有一个'@'
字符,对DriveApp.Files
来说很好用;但是,不适用于Blob名称。当我删除“ @”时,代码可以正常工作。