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

Apps Script HTML锚点链接部分生效、返回值类型报错问题

问题成因

该报错由Google Workspace插件平台的双重校验规则触发,具体原因如下:

  • 域名白名单拦截:Workspace插件平台默认仅允许跳转到谷歌官方域名(如google.com、googleusercontent.com等)及插件配置中明确授权的第三方域名,你使用的非谷歌域名未被纳入白名单,触发平台的跳转校验拦截。
  • 服务端返回值构建不规范:如果你的锚点点击触发了google.script.run调用服务端函数,服务端返回的对象未调用对应Builder的build()方法,或是返回了平台不支持的自定义对象类型,也会触发该类型报错。
解决方法

按照以下步骤操作即可修复问题:

  1. 配置域名白名单
    在插件根目录的appsscript.json清单文件中,新增需要跳转的第三方域名到urlFetchWhitelist字段,示例配置如下:
    {
      "timeZone": "Asia/Shanghai",
      "dependencies": {},
      "oauthScopes": ["https://www.googleapis.com/auth/script.container.ui"],
      "urlFetchWhitelist": ["https://你的目标域名.com/*"]
    }
    
  2. 调整HTML锚点跳转逻辑
    不要直接在<a>标签的href属性中填写第三方外链,改用window.open()方法触发跳转,同时添加安全属性避免平台拦截,示例代码如下:
    <a href="javascript:void(0)" 
       onclick="window.open('https://你的目标域名.com')" 
       target="_blank" 
       rel="noopener noreferrer">
       跳转链接
    </a>
    
  3. 规范服务端返回值
    检查所有被前端调用的Apps Script服务端函数,若使用了CardService、NavigationService等Builder类创建返回对象,必须在末尾调用.build()方法后再返回,示例如下:
    // 错误写法
    function getTestCard() {
      return CardService.newCardBuilder()
        .setHeader(CardService.newCardHeader().setTitle('测试卡片'))
    }
    
    // 正确写法
    function getTestCard() {
      return CardService.newCardBuilder()
        .setHeader(CardService.newCardHeader().setTitle('测试卡片'))
        .build()
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:51:00