Google Sheets脚本仅访问自身表格却提示“应用未验证”的解决问询
解决Google Sheets脚本的"This app isn't verified"提示问题
我完全懂你的困惑——明明是自己的表格自己写的脚本,为什么还要过验证?其实这是Google OAuth安全机制的要求,哪怕只访问自己的资源,未验证的项目还是会触发这个提示。下面给你几个实用的解决方法:
方法1:添加自己为测试用户(最适合个人自用脚本)
这是最快解决的方式,步骤如下:
- 打开脚本编辑器,点击顶部菜单的资源 -> 云平台项目,复制项目ID或者直接点击链接进入对应的Google Cloud Console项目
- 在Cloud Console里,找到API和服务 -> OAuth同意屏幕
- 选择外部类型(个人用选外部完全没问题),然后点击创建
- 填写基本信息:应用名称(随便填,比如"My Sheet Script")、支持邮箱(用你的Google账号邮箱就行),拉到最底部点击保存并继续
- 接下来的页面(范围)不用修改,直接点击保存并继续
- 到测试用户页面,点击添加用户,输入你自己的Google账号邮箱,保存
- 回到脚本编辑器,重新运行你的函数,这时候提示里会出现高级选项,点击它,然后选择继续访问[你的应用名称],之后就不会再弹出这个未验证提示了
方法2:改用简单触发器(如果你的场景符合)
如果你的函数是需要自动触发(比如打开表格时、编辑单元格时),可以用Google Sheets的简单触发器,这类触发器不需要明确的OAuth授权,因为权限被限制为只能访问触发它的表格:
- 比如把你的逻辑改成绑定到onOpen触发器:
function onOpen() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const rulesSht = ss.getSheetByName('rules'); const lastRow = rulesSht.getLastRow(); // 这里可以加你后续的逻辑,比如把结果写到某个单元格 }
不过要注意,简单触发器不能手动运行(手动运行还是会触发授权),只能由系统事件触发,而且不能调用需要更高权限的服务。
关于你的误解
你以为自己的表格关联脚本不需要授权,其实是混淆了权限范围——哪怕是自己的表格,脚本需要通过Google的服务访问它时,还是需要验证你的身份,确保是你本人允许脚本访问资源。默认的脚本项目是未经过Google官方验证的,所以会弹出这个提示,而测试用户机制就是给个人自用脚本开的绿色通道。
另外给你的代码提个小建议:尽量避免全局变量,把ss=SpreadsheetApp.getActiveSpreadsheet();改成const ss = SpreadsheetApp.getActiveSpreadsheet();,这样代码更规范,也避免意外的变量污染。
内容的提问来源于stack exchange,提问作者sigil
相关产品推荐
相关产品推荐

