html - 如何使用应用程序脚本通过 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);}
解决方案
假设您的数据输入是定义为“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>
(您不需要完整的符号,并且可以留下大部分您不使用的标签)。
推荐阅读
- python - 使用正则表达式获取模式中的不同组
- strapi - 使用 cli 创建项目时出现 Strapi 错误
- javascript - React Router - 切换路由时重置状态
- javascript - 从 CreateElement 向数组添加文本和值
- flutter - 如何在 Flutter 中创建时间线?
- node.js - 通过流将文件块上传到 S3
- node.js - 为什么我无法在猫鼬模式中推送数据?
- javascript - React:如何使用相同类型的多个上下文,同时允许孩子从所有上下文中读取数据
- php - 在 PHP 中创建一个 word 文件并将其附加到邮件中
- kotlin - KMM - 在项目“:shared”中找不到错误任务“embedAndSignAppleFrameworkForXcode”