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

Google表格表单提交触发脚本:UrlFetchApp.fetch权限报错(SitesApp已弃用)

解决Google Apps Script表单提交触发时UrlFetchApp权限报错问题

问题背景

代码已稳定运行15年,因Google Sites旧模板被转换,原依赖SitesApp获取HTML模板的逻辑因该服务弃用,改为UrlFetchApp.fetch请求新模板URL,但表单提交触发on form submit时出现权限错误:

Exception: You do not have permission to call UrlFetchApp.fetch. Required permissions: https://www.googleapis.com/auth/script.external_request

旧/新代码对比

旧代码(依赖弃用的SitesApp)

var site = SitesApp.getSiteByUrl(<url>);
var page = site.getChildByName('receipt');
var content = page.getHtmlContent();

新代码(改用UrlFetchApp)

var response = UrlFetchApp.fetch(<new URL>);
var content = response.getContentText();

已尝试的操作

  • 在appscript.json中明确声明包含https://www.googleapis.com/auth/script.external_request在内的OAuth范围:
    {
      "oauthScopes": [
      "https://www.googleapis.com/auth/script.external_request",
      "https://www.googleapis.com/auth/drive",
      "https://www.googleapis.com/auth/script.send_mail",
      "https://www.googleapis.com/auth/userinfo.email",
      "https://www.googleapis.com/auth/spreadsheets",
      "https://www.googleapis.com/auth/calendar"
      ],
      "timeZone": "America/Adak",
      "dependencies": {},
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8"
    }
    
  • 使用显式设置的表单提交触发(非隐式触发)
  • 尝试请求公开可访问的URL,问题依旧

解决方案建议

  1. 重新完成脚本权限授权
    即使配置了权限清单,旧的授权缓存可能未更新。手动在脚本编辑器中执行一次调用UrlFetchApp.fetch的函数,触发权限授权弹窗,完成授权后再测试表单触发。

  2. 检查触发的运行身份
    确认表单提交触发的运行身份为脚本/表单所有者,避免因使用其他账号运行导致权限不足。可在触发设置界面查看并调整运行身份。

  3. 验证权限清单配置有效性
    打开「项目设置」→「显示“appsscript.json”清单文件」,再次核对oauthScopes数组格式(逗号分隔、引号正确),确认https://www.googleapis.com/auth/script.external_request存在。保存清单后重启脚本编辑器,确保新配置加载生效。

  4. 改用Drive API获取模板内容(若模板存于Drive)
    如果新模板对应的Google Sites页面文件在Drive中,可直接通过Drive API读取内容,绕开UrlFetchApp的权限限制:

    var fileId = "你的模板文件ID";
    var content = DriveApp.getFileById(fileId).getBlob().getDataAsString();
    

    需确保https://www.googleapis.com/auth/drive权限已配置,且运行账号有权访问该Drive文件。

  5. 确认目标URL的访问权限
    在匿名浏览器窗口打开目标URL,验证是否无需登录即可访问。若为内部站点,需确保触发运行身份的账号具备访问权限,或临时将模板页面设置为完全公开测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:25:10