📌  相关文章
📜  gspread.exceptions.APIError: {'code': 403, 'message': '调用者没有权限', 'status': 'PERMISSION_DENIED'} (1)

📅  最后修改于: 2023-12-03 15:31:04.903000             🧑  作者: Mango

介绍:gspread.exceptions.APIError: {'code': 403, 'message': '调用者没有权限', 'status': 'PERMISSION_DENIED'}

1. 异常介绍

当使用 gspread 库中的某些功能(例如向谷歌表格中写入数据)时,有可能会遇到类似下面这个异常:

gspread.exceptions.APIError: {'code': 403, 'message': '调用者没有权限', 'status': 'PERMISSION_DENIED'}

这个异常表示调用者(也就是你的程序)没有权限执行某个操作,可能是没有授权,或者是授权的账户没有相关权限。

2. 解决方案

出现这种异常的解决方案如下:

2.1 重新授权

有时候,这个异常是因为你的程序没有正确授权造成的。你需要重新授权程序,确保可以正确访问谷歌表格。具体步骤如下:

  • 打开谷歌云平台控制台:https://console.cloud.google.com/
  • 找到你创建的项目,选择“API和服务” -> “凭据”,点击“创建凭据”,选择“服务账户密钥”。
  • 在“服务账户”中输入账户名和角色,点击“保存”生成凭据。
  • 下载生成的 JSON 文件,重命名为 credentials.json,并放到你的代码目录下。

在代码中使用以下语句进行授权:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)
2.2 检查权限

如果你已经正确授权,但仍然遇到这个异常,可能是因为授权的账户没有相关权限。你需要检查如下事项:

  • 检查授权的账户是否有访问相关谷歌表格的权限;
  • 检查相关谷歌表格的共享设置是否正确,确保你的账户拥有编辑权限。
2.3 其他解决方案

除去上述解决方案之外,你还可以尝试以下步骤:

  • 将谷歌表格的访问权限设置为“公开可访问”;
  • 将 gspread 库升级到最新版本,可能会有解决问题的更新。
3. 总结

gspread.exceptions.APIError: {'code': 403, 'message': '调用者没有权限', 'status': 'PERMISSION_DENIED'} 这个异常是谷歌表格授权或权限设置不正确所引起的错误。解决方案包括重新授权、检查权限设置、将表格的访问权限设为“公开可访问”等措施。如果仍然无法解决问题,可以尝试升级 gspread 库。