javascript - 在 Google Scripts 中将 JS 变量传递给 HTML

标签 javascript html google-apps-script

我正在尝试将通过电子邮件发送的 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/

相关文章:

google-apps-script - 通过脚本向 Google 表格中的选定单元格添加背景颜色

google-apps-script - 每 15 分钟在准确时间触发 GAS

javascript - 单击图像并重定向到新页面,并将单击的图像动态添加到新页面?

javascript - 从 Iframe 中的 Ajax 响应加载并运行 JS

javascript - 用于显示和隐藏的 Javascript

html - 每 10 秒更改一次正文背景

html - 文件拖放不适用于 knockout.js

javascript - 如何根据对象数组查询docpad中的文档

javascript - 使用 if..else 语句根据年龄计算分数,脚本仅显示第一个值

javascript - 如何在 Google Apps 脚本 HTMLService 中设置链接? (错误与accounts.google.com的连接被取消)