如何使用应用脚本通过html标签将列表添加到电子邮件模板的正文中?不想使电子邮件整体变成HTML

时间:2019-06-25 08:28:19

标签: html google-apps-script google-sheets

我在工作表的另一个标签上创建了电子邮件模板。该模板实质上列出了许多考试的成绩。我认为这就像制作一个简单的html模板一样简单,但是它不起作用。

这当前位于单元格中,为变量messageBody1

Hello {Name},

Your requested grades for the {For} for the language {Lang Exam 1}, and exam {Exam 1} are below.

Exam name: {Exam 1}, # of grades: {Num Exam 1}

Your grades are 

<html>
<head>
<script>
</script>
</head>
<body>
<ul>
<li> {data}
</li>
</ul>
</body>
</html>

{data}的位置为A,B,C,D,F,A,B。

我希望它列出为


A
B
C

我尝试了以下方法,但似乎没有列出Gmail中的成绩。

var messageBody1 = bodyTemplateExam1LangExam1.replace(/{Name}/g,Name).replace(/{data}/g,data).replace("{For}",For).replace(/{Exam 1}/g,Exam1).replace(/{Lang Exam 1}/g,LangExam1).replace(/{Num Exam 1}/g,NumExam2);
if (Exam1 == "Math 2" && LangExam1 == "Spanish"){
   MailApp.sendEmail(Email,subjectLine, messageBody1);}

1 个答案:

答案 0 :(得分:1)

假设您的数据输入是定义为“ A,B,C,D,F,A,B”的字符串。

如果要在HTML正文中将{data}显示为列表,则可以将“数据”分配给数组,从而将每个逗号分隔的数据条目分配给数组元素。然后,您将遍历数组并将每个元素包含在<li> </li>标记内,并将所有包含的元素附加到将替换占位符{data}的字符串中。代码如下所示:

    function myFunction() {

  var bodyTemplateExam1LangExam1=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('A1').getValue();

  var Name="testname";
  var data="A,B,C,D,F,A,B";
  var For="homework";
  var Exam1="Math 2";
  var LangExam1="Spanish";
  var NumExam2=2;

  var Email="testmail@test.com";
  var subjectLine="exam results";

  var dataArray=data.split(",");
  var list="";
  dataArray.forEach(function(element) 

   list=list+"<li>"+element+"</li>";
  })
  var messageBody1 = bodyTemplateExam1LangExam1.replace(/{Name}/g,Name).replace(/{data}/g,list).replace("{For}",For).replace(/{Exam 1}/g,Exam1).replace(/{Lang Exam 1}/g,LangExam1).replace(/{Num Exam 1}/g,NumExam2);
  if (Exam1 == "Math 2" && LangExam1 == "Spanish")

    Logger.log(messageBody1)
    MailApp.sendEmail 
    ({
      to: Email,
      subject: subjectLine,
      htmlBody: messageBody1
    })
  }  
}

在单元格A1中包含以下内容:

<p>
Hello {Name},

Your requested grades for the {For} for the language {Lang Exam 1}, and exam {Exam1} are below.

Exam name: {Exam 1}, # of grades: {Num Exam 1}

Your grades are 
<ul>
{data}
</ul>
</p>

(您不需要完整的注释,可以保留大部分不用的标签)。