【问题标题】:Persistent SpreadsheetNotFound errors on specific Google Sheets spreadsheets in gspread for PythonPython 的 gspread 中特定 Google 表格电子表格上的持久性 SpreadsheetNotFound 错误
【发布时间】:2015-09-17 23:30:36
【问题描述】:

我正在使用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 产生了影响。

【问题讨论】:

    标签: python google-api google-sheets gspread


    【解决方案1】:

    来自 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 证书文件中的电子邮件地址添加到电子表格中。

    Using OAuth2 for Authorization

    参见第 7 点:

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

    【讨论】:

    • 感谢您的回复。是的,我必须更新它才能使 任何 电子表格正常工作。奇怪的是文件可以共享同一个文件夹 - 具有相同的权限 - 有些工作,有些不工作。
    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多