是否可以通过一个请求仅列出根目录文件夹或Google Drive API上其下任何级别的文件?

问题描述 投票:1回答:1

[我想做的是从Google云端硬盘文件创建本地文件树(就像缓存一样工作,因此我不必每次都需要文件信息时发出HTTP请求(Google的配额有限) API)。可以找到代码here

我最好的方法是一次请求所有文件,因此我有一个庞大的File列表,没有太多的HTTP请求,我可以将它们链接起来以创建树。通过对文件进行一些技巧来完成这种工作,但是问题是我得到的文件比我需要的多得多(收到9729个,有用的1764个),因为我无法想到一个有效的[C0 ]转到filter服务。我正在下载所有文件(包括sharedWithMe,除了垃圾桶,因为它有一个简单的过滤器list,也只下载了必需的字段),并且由于不必要的数据,它比需要的时间要长得多。

我只是想获取MyDrive(根)文件夹(有一些trashed = false,我不能简单地通过使用files that are sharedWithMe and are also under MyDrive忽略它们)下的文件)。换句话说,我只想获取处于根级别的文件,属于子级别的文件的子级文件等等。有查询吗?或至少使其更有效率?

注意:这不是q = 'me' in owner

python python-3.x google-drive-api
1个回答
0
投票

我发现创建树的最佳方法是:

  1. 为所有文件夹(shared drive application)请求files.list,因为通常文件夹少于文件。 q: mimeType = 'application/vnd.google-apps.folder'也可能有用。
  2. 创建丢弃所有无用文件夹的树结构。
  3. 对于树中的每个文件夹,获取其ID,然后使用trashed = false获取file.list(请注意主体尺寸过大(可能超过25,000个字符,不确定)的过于复杂的查询错误)。
  4. 完成树的链接。

这样做,会有一些无用的数据和一些请求,但是下载的数据量比没有q = 'mimeType != 'application/vnd.google-apps.folder' and (folderId1' in parents or 'folderId2 in parents or ... or 'folderIdN' in parents)限制的列表文件少得多。

这个想法来自关于q的答案的[[替代3。

© www.soinside.com 2019 - 2024. All rights reserved.