【发布时间】:2023-03-14 21:06:01
【问题描述】:
我正在尝试收集作为给定文件夹后代的所有文件和文件夹。
为此,我使用带有q="'FOLDER_ID' in parent" and trashed=false 的file.list(),其中FOLDER_ID 是我感兴趣的文件夹的ID。在处理结果时,我会跟踪从该请求返回的所有文件夹,并然后使用 q 参数中的新文件夹重复 files.list() 调用。我使用or 将多个文件夹合并到一个请求中,并继续重复此操作,直到没有返回新文件夹。
例子:
初始请求:q="('FOLDER_ID' in parent) and trashed=false"
所有后续请求:q="('FOLDER_ID_1' in parent or 'FOLDER_ID_2' in parent or 'FOLDER_ID_3' in parent ...) and trashed=false"
(有关如何创建查询的更多信息,请参阅Drive REST API - Search for Files)
有时这会返回它应该返回的所有文件夹,有时会忽略一些文件夹。如果我删除 q 参数,则不会发生这种情况,因为每个文件和文件夹都返回,没有丢失。
经过一些测试/反复试验,我发现如果我没有收到我应该收到的所有文件夹,发送一个没有q 的请求似乎可以“解决”问题。下次我运行我的应用程序并使用 q 时,所有正确的文件夹都会返回。
其他信息:
不是权限问题,我用的是
drive.readonly这不是
pageSize问题,因为我为此尝试了不同的值并得到了不同的结果。这不是
pageToken问题,因为我确保在给定nextPageToken存在时再次发送请求。我正在一个文件夹中运行此程序,该文件夹中包含略低于 4,000 个后代文件夹和略低于 25,000 个后代文件。
我觉得这一定是与在单个请求中使用q 参数中的多个文件夹有关的错误,考虑到我可以执行完全相同的过程并且会看似随机地得到不同的结果。
【问题讨论】:
标签: google-drive-api