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

Google Sheets中无法从对话框/侧边栏调用服务器函数的权限问题

解决Google Workspace账号中Apps Script的PERMISSION_DENIED错误

问题概述

你提供的代码在个人Google账号上运行正常,但在Google Workspace管理员账号中点击提交按钮无响应,开发者工具返回200状态码但包含PERMISSION_DENIED存储读取错误,无法触发预期的alert提示。

核心原因

Google Workspace账号的管理员权限默认会施加更严格的脚本安全限制,即使你是账号管理员,默认的自动作用域可能未被正确授予,或者Workspace的全局安全策略阻止了脚本的存储访问(google.script.run内部依赖存储机制传递数据)。

解决方案

1. 手动指定明确的OAuth作用域

默认自动生成的作用域在Workspace环境中可能不足以通过权限校验,需手动添加必要的作用域:

  • 在脚本编辑器中,点击顶部菜单栏的「设置」,勾选「显示appsscript.json清单文件」
  • 打开appsscript.json文件,替换oauthScopes字段为以下内容(根据实际需求调整时区):
{
  "timeZone": "Asia/Shanghai",
  "dependencies": {},
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets.currentonly",
    "https://www.googleapis.com/auth/script.container.ui"
  ]
}
  • 保存文件后,重新运行launchMyDialog函数,按照提示完成权限授权(确保所有请求的权限都被允许)

2. 调整Google Workspace管理员安全设置

作为Workspace管理员,检查全局安全策略是否限制了脚本运行:

  • 登录Google Admin控制台
  • 导航至「应用」→「Google Workspace」→「Google Apps Script」
  • 确保「允许用户运行未验证的脚本」选项已开启(若你的脚本属于内部未验证应用)
  • 若需要更严格的控制,可将该脚本添加到「信任的应用」列表中

3. 优化代码传递方式(辅助排查)

虽然核心问题是权限,但可尝试修改代码避免表单对象序列化可能带来的潜在问题:
修改ah2.html中的脚本部分:

<script>
  function runThis() {
    const dateValue = document.getElementById('dp').value;
    google.script.run.doSomething({date: dateValue});
  }
</script>

同时修改按钮的点击事件:

<input type="button" value="Submit" onClick="runThis();">

验证步骤

  1. 完成上述设置后,刷新Google表格页面
  2. 重新运行launchMyDialog打开对话框
  3. 输入日期并点击提交,检查是否正常弹出alert提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:23:19