22

亲爱的大家

我正在尝试按“完整路径”查找文档列表。并且在阅读 API 参考之后,这似乎是一项复杂的任务。假设我的路径类似于 /path0/path1/path2/...

  1. 列出根文件夹的子文件夹并找到名称等于“path0”的所有子文件夹并将它们放入列表“result0”
  2. 查找“result0”中名称等于“path1”的所有子项,并将它们放入列表“result1”
  3. 查找“result1”中名称等于“path2”且...

上述方法似乎效率很低,因为它需要我的应用程序和 Drive 之间的多次交互。我了解 Google Drive 允许多个文件共享相同的文件名,即使在同一个文件夹中也是如此。如果我可以做类似的事情会很方便:

listDocByFullPath("path0/path1/path2")

当前版本的 Google Drive SDK 可以做到这一点吗?如果它还没有,我想知道是否有比我在这里列出的更简单的方法。

顺便说一句,由于我的应用程序纯粹是后端服务,因此无法使用 Google 提供的文件选择器。

干杯。

4

3 回答 3

18

与传统文件系统不同,一个文件可以位于 Drive 上的多个文件夹下。文件夹与标签非常相似。因此,常规路径并不总是在我们的抽象中起作用。我建议您遵循以下逻辑:

  1. 使用 q = 列出文件'root' in parents and title = 'path0' and mimeType = 'application/vnd.google-apps.folder'并选择第一个结果。
  2. 如果有匹配的结果,获取文件夹的 id 并执行另一个列表'<id of path0>' in parents and title = 'path1' and mimeType='application/vnd.google-apps.folder'并选择第一个结果。
  3. 继续前进,直到到达目标文件夹。
于 2013-06-24T12:58:15.877 回答
6

最大的问题是路径不能唯一标识文件或文件夹!例如,在 Web UI 中,您可以创建 2 个与同一文件夹的子文件夹同名的文件夹。即你可以制作一棵看起来像这样的树: root |-somefolder |-somefolder

于 2017-09-20T17:11:39.087 回答
0
  1. 搜索/列出参数 q 设置为 name= 并包含字段参数“files(mimeType,id,name,parents)”
  2. 如果只有一个搜索结果,返回这个文件
  3. 否则,如果有多个文件,则在 parent 中获取 ID 并使用具有该 ID 的文件的 get API 并检查名称是否与路径中的最后一个片段匹配。如果只有一个父 Id 匹配,则选择该选项,否则选择匹配的父元素并检查路径中的下一个父元素

基本上检查自下而上

于 2020-11-27T08:15:21.793 回答