You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用<?= var ?>在HTML中输出Google Apps Script变量失败

解决Google Apps Script中标签直接渲染的问题

嘿,我之前也踩过这个坑!这种情况基本都是因为你的HTML没有通过GAS的模板服务正确处理,导致脚本标签被当成普通文本输出了。下面是几个靠谱的排查和解决方向:

  • 确保用模板服务加载HTML文件
    别用HtmlService.createHtmlOutputFromFile()加载你的HTML,这个方法只会直接返回静态HTML,不会解析<?= ?>标签。你得用createTemplateFromFile()创建模板对象,赋值变量后再调用evaluate()处理:

    function doGet() {
      // 创建模板对象
      const template = HtmlService.createTemplateFromFile('你的HTML文件名');
      // 给模板传递变量
      template.myVariable = "要输出的内容";
      // 处理模板并返回
      return template.evaluate();
    }
    
  • 检查标签语法是否正确
    别小看拼写错误!比如写成<? var ?>(少了等号)、<? = myVar ?>(等号前后加空格)或者变量名拼写错,都会导致模板不识别标签。正确的写法是紧凑的<?= 变量名 ?>。

  • 确认变量已正确传递
    检查你的GS代码里,有没有给模板对象正确赋值对应的变量。比如GS里是template.userName = "张三",HTML里就得写<?= userName ?>,大小写、拼写完全一致才行。

  • 清理缓存并重新部署
    GAS有时候会有缓存残留,导致旧代码生效。你可以:

    1. 在脚本编辑器里先手动运行一次doGet函数
    2. 重新部署Web应用,选择“新建版本”,确保部署的是最新代码

给你个完整的示例参考:

Code.gs

function doGet() {
  const userInfo = {
    name: "测试用户",
    email: "test@example.com"
  };
  const template = HtmlService.createTemplateFromFile('UserProfile');
  template.user = userInfo;
  return template.evaluate().setTitle('用户信息');
}

UserProfile.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
  <h2>用户详情</h2>
  <p>姓名:<?= user.name ?></p>
  <p>邮箱:<?= user.email ?></p>
</body>
</html>

如果这些都试过还是不行,你可以检查下Web应用的部署权限,确保执行权限和访问权限设置正确,比如如果需要公开访问,就选“任何人,甚至匿名”。

内容的提问来源于stack exchange,提问作者user547352

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:13:05