Google 应用程序脚本:使用 mailapp.sendmail 服务发送仅带有偶尔附件的邮件

Google apps script: use the mailapp.sendmail service to send mails with only occasional attachments

请耐心等待,我是GAS新手。我正在尝试使用 mailapp.sendmail 服务来发送偶尔带有附件的邮件。它以某种方式以没有附件作品的变体或带有附件的变体结束,但绝不会同时出现。这是代码:

function sendMail(tomail, subject, fill_cell, messageTemplate, EMAIL_SENT, fileAttach) {
  if (fileAttach == "noFile" )
     { var fileAttachHolder = ' ' }
   else
     { var fileAttachHolder = fileAttach + '.getAs(MimeType.PDF) '};   
  MailApp.sendEmail(tomail, subject,'', {htmlBody: messageTemplate, attachments: [fileAttachHolder]});
  fill_cell.setValue(EMAIL_SENT);
  SpreadsheetApp.flush();
  // Browser.msgBox('Mail sent: '+ subject);
}

像这样调用函数:

 if ((emailSent != EMAIL_SENT)  && row[4] > now ) {  // Prevents sending duplicates or outdated
  sendMail(
    emailAddress,
    "Hi, " + row[1] + " " + row[3],
    sheet.getRange(startRow + i, 18),
    HMESSAGE,
    EMAIL_SENT            
  );

我想这与我如何定义附件变量有关。感谢您的帮助。 马丁

附件必须在您的驱动器中并且此文件是 blobType。

我可以向您展示我的脚本示例。

function sendEmail() {

var Rainfall = DriveApp.getFilesByName('Untitled document')
var Rainfall2 = DriveApp.getFilesByName('128x128_tl_icon.png')

MailApp.sendEmail({
to:"mymail@gmail.com", 
subject: "Images for Social Media", 
body:"Hi Joe, here are the images for Social Media",


attachments: [Rainfall.next(), Rainfall2.next()]
  })

}
sendEmail()

终于找到了解决方案,我确定这不是最优雅的但它有效:

    function sendMail(tomail, subject, fill_cell, messageTemplate, EMAIL_SENT) {  
  MailApp.sendEmail(tomail, subject,'', {htmlBody: messageTemplate});
  fill_cell.setValue(EMAIL_SENT);
  SpreadsheetApp.flush();

}

    function sendMailwAtt(tomail, subject, fill_cell, messageTemplate, EMAIL_SENT, fileAttach) {  
  MailApp.sendEmail(tomail, subject,'', {htmlBody: messageTemplate, attachments: [fileAttach.next()]});
  fill_cell.setValue(EMAIL_SENT);
  SpreadsheetApp.flush();

}