gspread读取已共享给服务账号的xlsx报SpreadsheetNotFound错误
问题解答
不存在「xlsx格式文件不支持共享给服务账号访问」的限制,你触发gspread.exceptions.SpreadsheetNotFound报错和共享权限无关,核心原因是gspread仅支持操作Google云端原生Sheets格式表格,根本无法直接读取Google Drive中存储的.xlsx格式文件。
修复步骤
- 打开Google Drive中存放的目标xlsx文件,点击顶部「文件」菜单,选择「保存为Google Sheets」选项,系统会自动生成一份内容完全一致的原生Sheets格式表格副本
- 将新生成的Sheets格式文件共享给你使用的服务账号邮箱,按需配置查看/编辑权限
- 将代码中传入的文件标识替换为新生成Sheets文件的ID,重新调用gspread接口即可正常读取
触发同类报错的其他常见原因
- 共享时填写的服务账号邮箱有误,服务账号邮箱后缀统一为
*.iam.gserviceaccount.com,不要和普通个人谷歌账号混淆 - 代码中传入的表格名称、文件ID存在拼写错误,优先复制URL中携带的文件ID传参,比按文件名匹配的稳定性高很多
- 服务账号所属的Google Cloud项目未启用Google Sheets API、Google Drive API,去控制台API库页面确认两个API都处于已启用状态

内容的提问来源于stack exchange,提问作者我要改名叫嘟嘟
相关产品推荐
相关产品推荐

