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

Apps Script部署Web应用加载外部脚本(如jQuery)失败求助

Google Apps Script Web应用加载外部jQuery报TrustedHTML错误的解决方案

近期Google Apps Script的HtmlService安全策略更新,导致原本正常运行的Web应用在加载外部jQuery时触发TrustedHTML相关错误,这是IFRAME沙箱模式下新增的DOM操作安全限制所致,并非代码本身问题。

错误原因

当前HtmlService的IFRAME沙箱模式默认启用了Trusted Types强制模式,要求所有涉及HTML注入的操作(如innerHTML)必须使用经过信任的HTML内容。未适配该机制的外部脚本(如jQuery中部分原生DOM操作)会因直接使用innerHTML触发错误,进而导致脚本加载失败,出现$ is not defined的后续报错。

解决方案

方案1:配置CSP并注册Trusted Types策略

修改Code.gs中的doGet函数,添加内容安全策略(CSP)允许加载外部jQuery,并注册信任策略:

function doGet() {
  var template = HtmlService.createTemplateFromFile('index');
  return template.evaluate()
                .setTitle('TEST')
                .addMetaTag('viewport', 'width=device-width, initial-scale=1')
                .setSandboxMode(HtmlService.SandboxMode.IFRAME)
                .setContentSecurityPolicy(`
                  default-src 'self';
                  script-src 'self' https://ajax.googleapis.com;
                  trusted-types jquery;
                  require-trusted-types-for 'script';
                `);
}

在index.html中,加载jQuery后添加Trusted Types注册代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
  // 注册允许jQuery使用的Trusted Types策略
  if (window.trustedTypes && trustedTypes.createPolicy) {
    trustedTypes.createPolicy('jquery', {
      createHTML: (str) => str
    });
  }
</script>

方案2:内嵌jQuery脚本

将jQuery的压缩代码直接内嵌到index.html中,绕过外部加载的安全限制:

<script>
// 粘贴jQuery 3.7.1的压缩代码(可从官方渠道获取)
</script>

验证步骤

修改代码后,重新部署Web应用(选择“新版本”并确认权限设置),刷新页面后控制台应不再报错,jQuery功能可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:12:37