如何通过API从Python调用Google Apps Script函数?缺少credentials.json如何解决
解决方案
1. 凭证文件问题修复
- 你之前创建OAuth 2.0客户端ID时选了网页应用类型,才会要求配置redirect uri。本地调试阶段直接创建桌面应用类型的OAuth 2.0客户端ID即可,无需额外配置redirect uri。
- 下载创建完成的凭证JSON文件,重命名为
app_script_creds.json,放到Flask项目根目录(和你写的CreateGCalEvent类所在py文件同目录)即可解决找不到该文件的报错。 token.json是首次完成OAuth授权后自动生成的文件,无需手动创建,首次运行脚本时会弹出浏览器引导你完成账号授权,授权成功后会自动在同目录生成该文件。
2. 权限范围适配
你当前配置的SCOPES未覆盖创建Calendar事件所需权限,需要修改SCOPES配置:
SCOPES = [ 'https://www.googleapis.com/auth/script.scriptapp', 'https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/calendar', # 新增Calendar操作权限 'https://www.googleapis.com/auth/spreadsheets' # 若要操作Google Sheet需新增该权限 ]
同时要确保你的Apps Script项目的appsscript.json配置文件中,oauthScopes字段和上述权限列表保持一致,避免跨端权限不匹配报错。
3. Apps Script部署配置检查
- 部署可执行API时,执行身份选择你授权用的Google账号对应的身份,比如个人使用选“我自己”
- 访问权限配置为和授权账号匹配的范围,个人使用选“仅限我自己”即可
4. 调用逻辑修正
你当前代码中调用的Apps Script函数是示例的getFoldersUnderRoot,需要替换为你自己实现的创建Calendar事件的函数名,若函数需要传参,可在request中添加parameters字段:
request = { "function": "你写的创建日历事件的函数名", "parameters": [参数1, 参数2] # 按函数要求传入对应参数 }
5. 线上部署redirect uri配置(可选)
如果后续要把服务部署到线上,需要创建网页应用类型的OAuth 2.0客户端ID,此时redirect uri填写你的Flask服务的授权回调地址即可,比如线上地址填https://你的业务域名/oauth2callback,本地测试可追加http://localhost:5000/oauth2callback。
内容的提问来源于stack exchange,提问作者arjunhd
相关产品推荐
相关产品推荐

