我想将Google Script变量用于" mail_template" HTML文档。我不明白为什么我的变量不能用于这个HTML文档,而我可以将它们用于google脚本本身。
我有3份文件:
这项工作的目的是使用Google表格数据发送设计的电子邮件。
我是初学者,文档似乎适用于更高级的用户。 https://developers.google.com/apps-script/guides/html/templates
某些插件正在执行相同的工作,但它们未经授权进入我的工作区。这很困难,我试图解决这个问题,因为3天后,我仍然无法解决。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<? solution1 ?>
</body>
</html>
&#13;
// This constant is written in column O for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";
function testSchemas() { {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = sheet.getLastRow();
var numRows = 1;
var dataRange = sheet.getRange(startRow, 1, numRows, 15)
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var name = row[2];
var surname = row[3];
var salesRepEmail = row[4];
var qualityAnalystEmail = "xxx@yahoo.fr"
var customerEmail = row[5];
var websiteURL = row[6];
var solution1 = row[7];
function doGet() {
return HtmlService
.createTemplateFromFile('mail_template')
.evaluate();
}
var htmlBody = HtmlService.createHtmlOutputFromFile('mail_template').getContent();
var emailSent = row[14]; // Third column
if (emailSent != "EMAIL_SENT") { // Prevents sending duplicates
/*MailApp.sendEmail(customerEmail, subject, message, {
cc: "",
bcc: qualityAnalystEmail + ", " + salesRepEmail
}); */
MailApp.sendEmail({
to: customerEmail,
bcc: qualityAnalystEmail + ", " + salesRepEmail,
subject: 'Résumé De Notre Consultation Du Site Mobile ' + websiteURL,
htmlBody: htmlBody,
});
}
Logger.log(name);
sheet.getRange(startRow + i, 15).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
&#13;
答案 0 :(得分:1)
如果您想将.gs文件中的变量传递给HTML模板,请在模板对象上调用evaluate()之前尝试此操作:
var template = HtmlService.createTemplateFromFile('mail_template');
template.myVar = myVar;
return template.evaluate();
调用evaluate()执行JS scriptlets(包含在&lt ;??&gt;中的内联代码)。要使模板可以访问变量,只需将其作为对象属性附加即可。最后,将变量打印到页面的正确表示法是
<?= myVar ?>
答案 1 :(得分:0)
我有一个类似的问题。 Anton的解决方案为我提供了大部分帮助,但我必须在调用.getContent()
之后添加evaluate()
并将评估后的模板分配给变量。
var template = HtmlService.createTemplateFromFile('mail_template');
template.myVar = myVar;
var emailToSend = officeTempl.evaluate().getContent();
htmlBody: emailToSend
https://developers.google.com/apps-script/reference/html/html-template#evaluate