Я получаю сообщение об ошибке Invalid argument: fileName(...)
, используя MailApp.sendEmail(msg)
.
Я прочитал это обсуждение .Согласно документации , 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())
}
Что я делаю не так?