Неверный аргумент: ошибка fileName при использовании MailApp.sendEmail () - PullRequest
0 голосов
/ 01 октября 2018

Я получаю сообщение об ошибке 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())
}

Что я делаю не так?

1 Ответ

0 голосов
/ 01 октября 2018

Спасибо @ | '-' |..

Это начало меня по пути ... Оказывается, у меня в имени файла был символ '@', который отлично работает для DriveApp.Files;однако, не работает для имен Blob.Когда я удалил '@', код работал правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...