3

我正在使用gspread从数百个 Google 表格电子表格中收集数据。我解析 Google Drive 存储在本地目录中的文件,并获取指定文件夹中所有电子表格的 URL。然后,我使用 python 包装器来检查 URL,并使用 shell 脚本包装器在连接出现故障时快速启动 python 包装器。

故障的原因之一是 SpreadsheetNotFound 错误。我进行了大约一半的快速检查,发现我的电子表格中有 21/139 (~15%) 总是出现这个错误(如果五次都没有找到,我让它跳过电子表格)。我已经使用 iPython 并使用 open_by_url、open_by_key 和 open(带有标题)手动测试了这些,但它们都返回相同的 SpreadsheetNotFound 错误。最令人沮丧的部分是能够直接从我的错误消息中复制 URL,将其粘贴到浏览器中,并且浏览器可以毫无问题地直接进入电子表格。第二个最令人沮丧的部分是它对大约 85% 的电子表格工作得很好,但 85% 并不能完全消除它。

我什至不确定这是否可以解决。我只是好奇是否还有其他人对 gspread 有过这个问题。

感谢您的任何反馈。

编辑 1:嗯,失败的电子表格都是在 2015 年 2 月 2 日之前创建的。旧工作表已更新为最新版本的云端硬盘 - 这可能对 API 产生了影响。

4

1 回答 1

2

来自 Gspread 文档:

ClientLogin is deprecated:
https://developers.google.com/identity/protocols/AuthForInstalledApps?csw=1
Authorization with email and password will stop working on April 20, 2015.
Please use oAuth2 authorization instead:
http://gspread.readthedocs.org/en/latest/oauth2.html

所以我假设你正在使用 oAuth2。这意味着您需要将该 json 证书文件中的电子邮件地址添加到电子表格中。

使用 OAuth2 进行授权

见第 7 点:

转到 Google 表格并与您的 json_key['client_email'] 中的电子邮件共享您的电子表格。否则,您在尝试打开它时会收到 SpreadsheetNotFound 异常。

于 2015-07-01T17:15:36.363 回答