如何解决Google Apps Script中UrlFetchApp触发403权限错误
脚本代码
function russianDeclension(input) { let response = UrlFetchApp.fetch("https://ws3.morpher.ru/russian/declension?format=json&s=" + input) let json = response.getDataAsString(); //let json = "{\"Д\":\"Петру\"}"; let p = JSON.parse(json) return p.Д; } console.info(russianDeclension("Петр"));
第一次运行出现的提示
需要授权
此项目需要您的权限以访问您的数据。
问题1:为何会出现该提示?脚本试图访问哪些个人数据?
这个授权提示是因为脚本调用了UrlFetchApp.fetch()方法发起外部网络请求,Google Apps Script的安全机制要求用户明确授予权限才能执行这类跨网请求操作。
从错误详情里的权限范围(scope=https://www.googleapis.com/auth/script.external_request)可知,该权限仅用于允许脚本向外部URL发送请求,并不会访问你的个人数据,只是需要你确认允许脚本发起外部网络调用。
点击「审查权限」后出现的提示
访问被阻止:[我的脚本]未完成Google验证流程
<my_email>@gmail.com
[我的脚本]未完成Google验证流程。该应用目前处于测试阶段,仅开发者批准的测试人员可访问。若您认为应拥有访问权限,请联系开发者。
若您是[我的脚本]的开发者,请查看错误详情。
错误403: access_denied
错误详情
错误403: access_denied
请求详情: access_type=offline login_hint=slepov@gmail.com hl=en_US response_type=none gsession redirect_uri=https://script.google.com/oauthcallback state=10656987804787015680 client_id=318389745225-nkegj410807ie1hi0io0tei5fpn7jo2t.apps.googleusercontent.com prompt=consent scope=https://www.googleapis.com/auth/script.external_request
相关开发者文档
问题2:如何避免该问题?
出现这个访问被阻止的提示,是因为你的脚本属于未通过Google OAuth验证的测试应用,默认仅允许开发者添加的测试人员访问。解决方法如下:
- 添加测试用户:作为开发者,进入Google Cloud Console找到该脚本对应的项目,打开「OAuth同意屏幕」设置,在「测试用户」列表中添加你自己的Google账号邮箱。添加完成后,重新运行脚本并授权即可正常使用。
- 完成OAuth正式验证(可选):如果需要让更多用户使用该脚本,可以提交应用进行Google OAuth正式验证。但此流程需要提交应用详细信息、隐私政策链接等材料,适合需要公开使用的应用。
内容的提问来源于stack exchange,提问作者Sergey Slepov

