You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Drive API技术问题:使用gspread无法读取他人共享的文档

问题原因及解决方案

这个问题我之前帮人排查过,核心原因出在你使用的OAuth权限范围上:

  • 权限范围的局限性:https://www.googleapis.com/auth/drive.file是Google Drive API的一个受限权限,它只允许你的gspread客户端访问两类文件:
    1. 由该OAuth客户端直接创建的文件(也就是你自己创建的那个文件,符合这个条件,所以能正常打开)
    2. 你手动通过授权流程明确授予该客户端访问权限的特定文件

而那个群组共享给你的文件,既不是这个客户端创建的,也没有被授权给该客户端,所以Google API会返回NOT_FOUND的404错误——本质上是权限不足导致的“找不到”,而非文件真的不存在。

至于你能在Web应用中打开这个文件,是因为网页端直接使用了你个人账户的完整权限,和gspread客户端使用的OAuth令牌权限是完全独立的两套权限体系。

解决办法

你可以根据需求选择以下两种方案:

方案1:扩大权限范围(推荐)

把OAuth权限范围更换为更适合的只读权限:

  • 如果只需要访问Google表格,用https://www.googleapis.com/auth/spreadsheets.readonly
  • 如果需要访问Drive里的更多类型文件,用https://www.googleapis.com/auth/drive.readonly

更换权限后,你需要重新生成OAuth令牌(旧令牌的权限范围不会自动更新),之后gspread就能访问所有你个人账户有权限的共享文件了。

方案2:手动授权特定文件(适合不想扩大权限的场景)

如果你坚持使用drive.file权限,可以手动将共享文件授权给你的OAuth客户端:

  1. 打开目标共享Google表格,点击右上角的「分享」按钮
  2. 在分享对话框中,输入你用于OAuth授权的个人账户邮箱(或者Google Cloud Console中该OAuth客户端对应的测试用户邮箱)
  3. 授予至少「查看者」权限,保存后重新尝试用gspread打开该文件

内容的提问来源于stack exchange,提问作者Weier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:48:11