在gspread for Python中的特定Google表格电子表格中存在持续的SpreadsheetNotFound错误

时间:2015-07-01 00:17:55

标签: python google-api google-sheets gspread

我正在使用gspread从几百个Google表格电子表格中收集数据。我将Google云端硬盘存储的文件解析到本地目录中,并获取指定文件夹中所有电子表格的网址。然后我使用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产生影响。

1 个答案:

答案 0 :(得分: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 cert文件中的电子邮件地址添加到电子表格中。

Using OAuth2 for Authorization

见第7点:

  

转到Google表格并使用您拥有的电子邮件分享您的电子表格   在你的json_key [' client_email']中。否则你会得到一个   尝试打开它时发生SpreadsheetNotFound异常。