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