繁体   English   中英

有什么方法可以通过一个请求仅列出 Google Drive API 上根文件夹或根文件夹下任何级别的文件?

[英]Is there any way to list only files that are on root folder or any level under it on Google Drive API with one request?

我想要做的是从 Google Drive 文件创建一个本地文件树(像缓存一样工作),所以我不必每次需要文件信息时都发出 HTTP 请求(配额在 Google API 上有限制) .

我最好的方法是一次请求所有文件,所以我有一个没有太多 HTTP 请求的巨大文件列表,我可以链接它们来创建树。 它通过对文件做一些技巧来起作用,但问题是我得到的文件比我需要的多得多(收到了 9729 个,只有 1764 个有用),因为我无法想到一个有效的过滤器列表服务。 我正在下载所有文件(包括 sharedWithMe,垃圾除外,因为它有一个简单的过滤器 Trashed trashed = false ,也只下载必要的字段),并且由于不必要的数据,它花费的时间比所需的时间长得多。

我只想获取 MyDrive(根)文件夹下的文件(有些文件是 sharedWithMe 并且也在 MyDrive 下,我不能通过q = 'me' in owner使用q = 'me' in owner来简单地忽略它们)。 换句话说,我只想获取根级别的文件,作为根级别文件的子文件的文件等等。 有什么查询可以做到吗? 或者至少让它更有效率?

注意:这不是 共享驱动器应用程序

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

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

这样做,会有一些无用的数据和一些请求,但下载的数据量比没有任何q限制的列表文件少得多。

这个想法来自关于这个问题的答案的备选方案 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM