我有一个包含数百个工作簿的google驱动器文件夹。我想遍历列表并更新数据。出于某种原因,gspread只能打开某些工作簿而不能打开其他工作簿。我最近才遇到这个问题。
这不是访问问题,因为所有内容都在同一个文件夹中。
我raise SpreadsheetNotFound
时得到open_by_key(key)
。但是当我拿到密钥并将其粘贴到URL中时,工作表会打开。这意味着它不是关键。
这里发生了什么?我很惊讶其他人没有遇到这个错误。
我是否达到了我可以拥有的Google表格数量限制?我有大约2千。
更新:我发现如果我进入工作簿并四处寻找,那么表单就被识别了!! !!这是什么意思?如果工作表最近没有活动,它无法识别工作表???
此外,如果我尝试使用Google App脚本SpreadsheetApp.openById
,则会识别该密钥!因此,工作表在那里,我无法用gspread
打开它。在gspread
识别出来之前,我先使用Google脚本在工作表上写了一些内容。
我可以使用pygsheets
打开工作表,但由于它是新的并且如此错误,我无法使用它。它看起来像APIv4
问题?某些工作表无法使用APIv3
打开?
更新:这是另一个观察。使用APIv4打开工作簿后,您无法再使用V3打开它。
答案 0 :(得分:3)
我的猜测是,您可能达到每个用户每100秒查询Google Drive API
的限制“,即1000
,无法更改为更高的值
解决方案1:
您可以通过转到项目页面来尝试申请更高的配额:
1 - DASHBOARD
2 - QUOTAS
3 - 点击“ 每100秒每100秒查询 ”后的铅笔
4 - 然后点击“ 申请更高的配额 ”
5 - 您最终会在https://support.google.com/code/contact/drive_quota上结束,但如果您按照上述步骤操作,表单中的project
和user
详细信息已经填好。
解决方案2:
我的帐户中只有几个电子表格存在同样的问题,问题解决了:
1 - 打开json密钥文件(projectname-ca997255dada.json
)
2 - 找到client_email
的值,即:
"client_email": "278348728734832-compute@developer.gserviceaccount.com",
3 - 使用该电子邮件分享您的表格
注意:您可以尝试更改一个无法打开的电子表格,并检查以上是否解决了问题。
答案 1 :(得分:2)
这听起来像是在gspread
中遇到限制。
即使您按键打开电子表格,gspread
仍会首先使用https://spreadsheets.google.com/feeds/spreadsheets/private/full
下载所有明确共享工作表的Feed,并检查您提供的密钥是否在其中。
问题是这个Feed只列出了500个文件。如果您的密钥不在这500个密钥中,那么即使电子表格可以访问,您也会获得SpreadsheetNotFound
。
我猜这个Feed是按照最近使用的顺序排序的,这解释了为什么编辑它会让gspread
再次看到它。
相关问题是here。
答案 2 :(得分:1)
我反复遇到这个问题。我发现的唯一一致的解决方案是重新分享" api用户的文件。它已经将api用户列为共享(因为它与其他所有用户在同一个共享文件夹中),但在"重新共享"之后我可以用gspread连接没问题。
基于此,我认为它可能实际上是一个权限问题(Google在通过APIv3访问时未能为API用户注册正确的权限。)