自动电子邮件发送 - Html体中的变量

时间:2015-06-09 13:34:06

标签: google-apps-script

我是天然气的新手。 场景是这样的: 有了一个包含收件人列表及其名称的电子表格,我想在“亲爱的{name}”顶部自动化和自定义电子邮件正文。 如何将变量传递给Htmlbody选项?

以下是代码的一部分......提前致谢。

var ss = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxxxxx").getSheets()[0];
  var rng = ss.getRange(2, 1, ss.getLastRow()-1, 8);
  var rngvls = rng.getValues();
  //
  for (var i = 0 ; i<rngvls.length; i++){
    var name= ss.getRange(i + 2, 5, 1, 1).getValue();
    GmailApp.sendEmail(dest, ogg, body,{name:nam, attachments: [fail.getAs(MimeType.PDF)], htmlBody : <html><h1>here is the header</h1> and here the name
</html>});

4 个答案:

答案 0 :(得分:1)

这些值已经在rngvls中。在循环中使用getValue()方法并不是非常有利于提高性能。

您可以使用串联将名称添加到包含html的字符串中。

试试这个:

for (var i = 0 ; i<rngvls.length; i++){

    var name = rnglvls[i+1][4];
    var html = "<html><h1>here is the header</h1>"+name+"html";

    GmailApp.sendEmail(dest, ogg, body,{name:nam, attachments: [fail.getAs(MimeType.PDF)], htmlBody : html});
}

答案 1 :(得分:0)

您可以通过设置HTML变量然后在可选的MailApp arguments中使用该变量,将HTML格式传递到脚本中。您也可以使用此方法在体内使用其他变量。

应该注意的是,GmailApp类更有可能需要重新授权,因为它可以访问用户的收件箱,因此,如果您所做的只是发送邮件,则推荐使用MailApp类。

var1 = ...
var2 = ...
var3 = ...
var html = '<body>' +
  '<p>Message.</p>' +
  '<p><b>Variable 1: </b>' + var1 + '</p>' +
  '<p><b>Variable 2: </b>' + var2 + '</p>' +
  '<p><b>Variable 3: </b>' + var3 + '</p>' +
  '</body>';
MailApp.sendEmail(recipient, subject, {htmlBody:html});

答案 2 :(得分:0)

使用云服务并获取导出链接。

var url = "https://docs.google.com/feeds/download/documents/export/Export?id="+docid+"&exportFormat=html";
  var param = {
  method      : "get",
  headers     : {"Authorization": "Bearer " +     ScriptApp.getOAuthToken()}
  };
  var htmlBody =     UrlFetchApp.fetch(url,param).getContentText();
 }

答案 3 :(得分:0)

如果您不需要发送过多的电子邮件消息(因为它相当慢),您可以使用以下脚本,它使用Google文档作为带有少量占位符的模板并创建它的临时副本,转换为HTML并作为消息正文发送。

Google文档中提供的所有功能都以HTML格式正确翻译,包括图片,字体等......

稍微修改了一些格式(例如图像对齐),但没有什么可以担心的。

如果您计划发送许多消息,您可能需要创建一个自动化过程,以便在定时器触发器上以较小的串发送消息,但这将不在此处。

代码:

function customizeHTMLMessage() {
  var templateId = '1aZAgVbvZYD1JcoLqv8x-A5knHLrVNOfEyGh_O-06dgg';// the template doc with placeholders
  var docId = DriveApp.getFileById(templateId).makeCopy('temp').getId();
  var doc = DocumentApp.openById(docId);// the temp copy
  var body = doc.getBody();
  var items = ['#day#','#starter#','#main course#','#dessert#'];// the placeholders in this example
  var values = ['Monday','Smoked fish','Beef steak','ice cream'];
  for(var n = 0;n<items.length;n++){
    Logger.log(items[n]+' to replace with '+values[n]);// check in the log
    body.replaceText(items[n],values[n]);// update the temp doc
  }
  doc.saveAndClose();// save changes before conversion
  var url = "https://docs.google.com/feeds/download/documents/export/Export?id="+docId+"&exportFormat=html";
  var param = {
  method      : "get",
  headers     : {"Authorization": "Bearer " +     ScriptApp.getOAuthToken()}
  };
  var htmlBody =     UrlFetchApp.fetch(url,param).getContentText();
  var trashed = DriveApp.getFileById(docId).setTrashed(true);// delete temp copy
  MailApp.sendEmail(Session.getActiveUser().getEmail(),'test','html body',{htmlBody : htmlBody});// send to myself to test
}

注意:此模板文档是共享的(仅查看)您可以制作副本以进行测试。

编辑:2个不同邮件阅读器中的屏幕截图。

enter image description here