我创建了这个脚本,允许我选择某个食物项目和服务大小,然后计算营养价值,将其添加到数据库中,在一天结束时将其全部汇总并向我发送一封电子邮件概述。它几乎都可以工作,我只是在将一些变量从我的脚本传递到HTML格式的电子邮件时遇到了麻烦。
在下面代码的部分中,totals
是电子表格范围内的数据值。我希望检索到的calories
,caloriesFromFat
和polyFat
值可以替换电子邮件htmlBody
中的匹配文字。
var calories = totals[0][25];
var caloriesFromFat = totals[0][26];
var polyFat = totals[0][27];
}
//Sends email with summary
MailApp.sendEmail({
to: "user@example.com",
subject: "Daily Intake Log",
htmlBody: <table style="width:100%">
<tr>
<td>Calories</td>
<td>calories</td>
</tr>
<tr>
<td>Calories From Fat</td>
<td>caloriesFromFat</td>
</tr>
<tr>
<td>PolyUnsaturated</td>
<td>polyFat</td>
</tr>
</table>
});
当我将变量calories
,caloriesFromFat
和polyFat
的内容输出到日志时,它们都包含它们应该包含的数字。但是当我收到电子邮件时它没有插入变量的内容,只留下变量的名称,例如calories
。
如何将计算值输入我的电子邮件?
答案 0 :(得分:2)
HTML必须是字符串(文本),您需要使用文本公式构建HTML。 JavaScript中的文本字符串放在一起,(连接)加号:
for i in range(0, 10):
attr = {}
if gender == 0 and len(men) < 51 :
height = float((random.uniform(1.3, 1.9) + (random.randint(10,20)/100.)).__format__('.2f'))
weight = float((random.uniform(45, 100) * height).__format__('.2f'))
attr['height'] = height
attr['weight'] = weight
men.append(attr)
如果在HTML属性中使用双引号,则在字符串的末尾使用单引号。 然后只需使用电子邮件HTML的变量名称:
var tableHTML = '<table style="width:100%">' + //Note single quotes on ends
"<tr><td>Calories</td><td>" +
calories +
"</td></tr>" +
"<tr><td>Calories From Fat</td><td>" +
caloriesFromFat +
"</td></tr>" +
"<tr><td>PolyUnsaturated</td><td>" +
polyFat +
"</td></tr>" +
"</table>";
答案 1 :(得分:1)
您可以使用Printing Scriptlets优雅地完成此操作,假设您的电子邮件HTML正文位于项目中的单独文件中。
这是一个用于插入calories
值的打印scriptlet。请注意,语法将变量名称包含在特殊标记<?= ?>
:
<?=calories?>
要填写模板,请先使用HtmlService获取模板,然后将打印scriptlet中的变量视为模板的对象属性。
// get email template
var template = HtmlService
.createTemplateFromFile('email');
// assign values to template printing scriptlets
template.calories = totals[0][25];
template.caloriesFromFat = totals[0][26];
template.polyFat = totals[0][27];
<强> Code.gs:强>
// Get my email address
var me = Session.getActiveUser().getEmail();
// get email template
var template = HtmlService
.createTemplateFromFile('email');
// assign values to template printing scriptlets
template.calories = totals[0][25];
template.caloriesFromFat = totals[0][26];
template.polyFat = totals[0][27];
// evaluate template to generate HTML
var htmlBody = template.evaluate();
//Sends email with summary
MailApp.sendEmail({
to: me,
subject: "Daily Intake Log",
htmlBody: htmlBody
});
<强> email.html 强>
<!-- HTML Email body with printing scriptlets -->
<table style="width:100%">
<tr>
<td>Calories</td>
<td><?=calories?></td>
</tr>
<tr>
<td>Calories From Fat</td>
<td><?=caloriesFromFat?></td>
</tr>
<tr>
<td>PolyUnsaturated</td>
<td><?=polyFat?></td>
</tr>
</table>