向Google Sheets发送数据时出现403权限范围不足错误排查
解决403 insufficient authentication scopes错误的几个关键点
核心问题1:gc.open()需要Drive API权限,你的Scope只包含Sheets
你代码里用gc.open("spreadsheet_name")打开表格,但这个方法会调用Google Drive API搜索匹配名称的文件,而你当前的SCOPES只声明了Sheets相关权限,没有Drive权限,这直接导致权限不足。
解决办法:
给SCOPES添加Drive相关权限,推荐用最小权限原则:
SCOPES = [ 'https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive.file' # 仅访问被共享给服务账号的文件,更安全 ]
核心问题2:换用更可靠的表格打开方式
gc.open()依赖名称匹配,容易因重名文件出错,还必须依赖Drive权限。建议直接用表格ID打开,无需Drive权限:
# 从表格URL提取ID:https://docs.google.com/spreadsheets/d/[表格ID]/edit worksheet = gc.open_by_key("your_spreadsheet_unique_id")
这样只保留https://www.googleapis.com/auth/spreadsheets这个Scope就行。
最后再确认两个细节
- 检查服务账号邮箱是否正确共享:打开
service_account.json找到client_email字段,把这个邮箱添加到目标表格的共享列表,设为Editor权限。 - 确保代码里的
df已正确定义(你代码直接使用了df但未展示定义,虽不是权限错误原因,但需避免后续报错)
内容的提问来源于stack exchange,提问作者ppp147
相关产品推荐
相关产品推荐

