我正在尝试将通过电子邮件发送的 html 中的文本更改为我定义的 JS 变量。重要的是我在 Google Scripts 中执行此操作并且有 2 个文件 Code.gs 和 Email.html。
我的 html 似乎无法访问 JS 变量,但我不确定我哪里出错了。我引用了一些类似的帖子,并尝试了一些不同的方法,但无法让它发挥作用。如果有人有建议,那就太好了。
代码.gs
var JSname;
function Email() {
JSname = 'It works!'
var theEmail = 'myemail@gmail.com';
var theSubject = 'Email subject line';
var template = HtmlService.createTemplateFromFile('Email');
var message = template.evaluate().getContent();
MailApp.sendEmail({ to: theEmail, subject: theSubject, htmlBody: message });
return
}
电子邮件.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<span id="HTMLname">[Text here]</span>
<script type="text/javascript" src="Code.gs">
document.getElementById("HTMLname").innerHTML = JSname;
</script>
</body>
</html>
最佳答案
问题:
你正在使用一个超出范围的变量,就这么简单
修复:
使用模板变量:
code.gs
function doGet(e) {
var template = HtmlService.createTemplateFromFile('Index'); // Or whatever you have
var JSname = 'It works!' // Ideally var names should start with lowercase
template.JSname = JSname // This is the IMPORTANT change
// Build and return HTML in IFRAME sandbox mode. (Copied from GS directly)
return template.evaluate()
.setTitle('Web App Window Title')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function Email() {
var theEmail = 'myemail@gmail.com';
var theSubject = 'Email subject line';
var template = HtmlService.createTemplateFromFile('Email');
var message = template.evaluate().getContent();
MailApp.sendEmail({
to: theEmail,
subject: theSubject,
htmlBody: message
});
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<span id="HTMLname"><?= JSname ?></span>
</body>
</html>
来源:https://script.google.com/u/1/home/start
关于javascript - 在 Google Scripts 中将 JS 变量传递给 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330121/