首页 > 解决方案 > 如何使用应用程序脚本通过 html 标签将列表添加到电子邮件模板的正文中?不希望制作整个电子邮件 html

问题描述

我在工作表的另一个选项卡上创建了一个电子邮件模板。这个模板基本上列出了许多考试的成绩。我认为这就像制作一个简单的 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。

我希望它改为列出


甲乙丙
_
_

我已经尝试过以下方法,但它似乎没有列出 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);}

标签: htmlgoogle-apps-scriptgoogle-sheets

解决方案


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

如果您想将 {data} 显示为 html 正文中的列表,一种方法是将“数据”分配给数组,从而将每个逗号分隔的数据条目分配给数组元素。然后,您将遍历数组并将每个元素包含在<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>

(您不需要完整的符号,并且可以留下大部分您不使用的标签)。


推荐阅读