我在工作表的另一个标签上创建了电子邮件模板。该模板实质上列出了许多考试的成绩。我认为这就像制作一个简单的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);}
答案 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>
(您不需要完整的注释,可以保留大部分不用的标签)。