【问题标题】:Google Drive API Limit on search query parameterGoogle Drive API 对搜索查询参数的限制
【发布时间】:2020-04-09 04:07:23
【问题描述】:

我有很多子文件夹,这是我的搜索代码

"trashed = false 
AND ( ".$folderIds." ) 
AND mimeType != 'application/vnd.google-apps.folder'"

$folderIds 是子文件夹,例如:

0B_123dSaMpleFolderId1 in parents or 0B_123dSaMpleFolderId2 in parents and 300 more folders

我知道这里已经发布了限制:What is the limit on Google Drive API usage?

但我想知道这个限制.. 将参数发送到 google drive api 时应该多长时间

【问题讨论】:

  • 我猜这个限制比你需要的 300 个文件夹少很多。你应该找到另一种方法,例如。将所有文件添加到您可以搜索的单个附加文件夹中。
  • 这将是一个选项,谢谢.. 但如果有一个选项只放置父文件夹 id 并且谷歌驱动器 api 将在子文件夹上完成其余的搜索..跨度>
  • 我真的很想在一个请求中进行搜索,但不幸的是在我的情况下这是不可能的..所以我所做的是划分文件夹的数量..我最终每次搜索做了 3-4 个请求..我认为这不会损害每天 10M 的配额..
  • 请记住,在云端硬盘中,“文件夹”并不是真正的文件夹,而是标签。因此,您可以在文件夹 1、文件夹 2 等 文件夹中拥有文件。所以你只需要在parents中查询folder-master。
  • 我想你误会了我。 folder-master 不是 folder-1 的父级。在云端硬盘中,文件夹只是标签,一个文件可以有多个标签。因此,例如,file-1 被标记为 folder-1 and folder-master。同样,file-2 被标记为 folder-2 folder-master。现在您只需要查询文件夹-master。

标签: search google-drive-api


【解决方案1】:

Google Drive API v3 允许我在 598 个文件夹中进行搜索:

len(gdrive.search(
    f"mimeType!='application/vnd.google-apps.folder' and 
    ({build_folder_subquery(folders[0:598])})"
))

713

但不是 599:

len(gdrive.search(
    f"mimeType!='application/vnd.google-apps.folder' and 
    ({build_folder_subquery(folders[0:599])})"
))
*** googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/drive/v3/files returned "The query is too complex.">

我不知道“查询太复杂”错误是由查询中的运算符数、查询中的字符数还是由其他一些度量触发的。上述查询中的字符数分别为 29949 和 29999。

【讨论】:

  • 我想补充一点,我被截断的最大查询长度是 7340 个字符。自您回答以来可能会发生变化。
猜你喜欢
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多