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

Google Apps Script Gmail插件文本按钮跳转URL触发CSP错误咨询

问题原因与修复方案

1. 实现方案选型

方案1(直接调用setOpenLink)是仅需要跳转URL场景的标准正确实现,代码执行效率更高。方案2适合跳转前需要额外执行业务逻辑的场景,两种写法本身语法没有错误。

2. 报错根因

你遇到的Chrome专属报错由两个问题共同导致:

  • OpenLink对象缺少必填的显式配置参数,Chrome对谷歌应用生态的CSP校验比Firefox严格,未明确配置打开属性的跳转被识别为非法的javascript:导航触发拦截。
  • appsscript.json中的openLinkUrlPrefixes前缀匹配规则不全,非匹配范围内的跳转都会被CSP拦截。

3. 修复步骤

步骤1:补全OpenLink配置参数

给OpenLink对象明确指定打开方式和关闭后的行为:

function getLink(link) {
  return CardService.newTextButton()
           .setText("Go to URL")
           .setOpenLink(CardService.newOpenLink()
           .setUrl(link)
           // 明确指定打开方式,可选FULL_SIZE(新标签页)/POPUP(弹窗)
           .setOpenAs(CardService.OpenAs.FULL_SIZE)
           // 明确指定跳转后关闭附加组件面板的行为,可选NOTHING/RELOAD_ADD_ON
           .setOnClose(CardService.OnClose.NOTHING));
}

步骤2:补全域名白名单前缀

修改appsscript.json中的openLinkUrlPrefixes配置,增加不带www的根域名前缀,覆盖所有该域名下的跳转链接:

"openLinkUrlPrefixes": [
  "https://www.leprosy.com/",
  "https://leprosy.com/"
],

修改配置后需要重新部署附加组件生效,即可解决Chrome下的CSP拦截问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:02