通过GmailApp.sendEmail

时间:2019-01-10 15:40:42

标签: javascript html google-apps-script

我有一个脚本,该脚本使用带有HTML正文的GmailApp发送电子邮件。我希望html正文包含包含它的电子表格中的特定值,但是每次发送电子邮件时,我添加的脚本都显示为纯文本。

email.gs:

function sendEmail() {



  var mailTo = 'example@gmail.com'


  var NAME = SpreadsheetApp.getActiveSheet().getRange('Sheet1!A1').getValue();


  var subject = 'Hello!'
  var html = HtmlService.createHtmlOutputFromFile('body').getContent();



  GmailApp.sendEmail('', subject, '', {


    name: 'Friend',
    htmlBody: html,
    bcc: mailTo


  });


}

body.html:

<h1>Good Evening, <? NAME ?> </h1>
<h3>Hello Friend!</h3>

每当运行脚本时,应从工作表中的指定单元格中提取

“ NAME”。

我猜测它显示为文本的原因是GmailApp.sendEmail将原始html粘贴到电子邮件中,并假定客户端会读取它,所以我如何首先通过脚本处理它,然后粘贴到电子邮件?

2 个答案:

答案 0 :(得分:1)

您的html正文位于其他文件中,并且不能通过NAME变量访问。 试试这个。

function sendEmail() {



  var mailTo = 'example@gmail.com'


  var NAME = SpreadsheetApp.getActiveSheet().getRange('Sheet1!A1').getValue();

var bodyText = "<h1>Good Evening,"+ NAME +" </h1><br><h3>Hello Friend!</h3>"

  var subject = 'Hello!'


  GmailApp.sendEmail('', subject, '', {


    name: 'Friend',
    htmlBody: bodyText,
    bcc: mailTo


  });


}

答案 1 :(得分:1)

或者您可以使用createTemplateFromFile并在

中记录“ =”
function sendEmail() {
  var mailTo = 'example@gmail.com'
  var subject = 'Hello!'
  var html = HtmlService.createTemplateFromFile('body');
  html.NAME = SpreadsheetApp.getActiveSheet().getRange('Sheet1!A1').getValue();
  html = html.evaluate().getContent();

  GmailApp.sendEmail('', subject, '', {
    name: 'Friend',
    htmlBody: html,
    bcc: mailTo
  });

}

<h1>Good Evening, <?= NAME ?> </h1>
<h3>Hello Friend!</h3>