【发布时间】:2022-02-07 21:00:05
【问题描述】:
我只想使用 java api (v3) 从谷歌驱动器中查询顶级文件。 (顶级,我的意思是我不想递归地进入文件夹)
我检查了this question,但它似乎没有合适的解决方案(即使它有一个公认的解决方案)。
我已经尝试了几件事:
1) 我尝试设置 Query
// this gives the shared files, but gives all files, not just the top files
Files.List request = drive.files().list().setQ("sharedWithMe = true");
2) 我在某处读到 与我共享 中的顶级文件没有任何父级,因此我尝试获取没有任何父级的文件
类似于我的云端硬盘文件的 'root' in parents,我尝试了几个查询:
drive.files().list().setQ("sharedWithMe = true and null in parents");
drive.files().list().setQ("sharedWithMe = true and parents = null");
但它们似乎不起作用。
3) 我尝试获取所有文件,然后尝试仅选择没有父级的文件。
Files.List request = drive.files().list()
.setQ("sharedWithMe = true)
.setFields("nextPageToken, files(id, name, parents)");
即使在输出字段中包含 parents 之后,File.getParents() 也会给出 NULL(即使对于具有父级的文件也是如此)。
问题:
有没有一种方法可以使用 Files.list() 获取每个文件的父母信息?
有没有办法在与我共享文件夹的顶层获取文件?(通过添加一些查询以及 sharedWithMe = true)
【问题讨论】:
-
我能想到的唯一解决方案是使用别名
root来引用提供文件ID 的任何位置的根文件夹。请参阅Work with Folders 和相关的SO post 了解更多信息。 -
@Teyam 我认为 SO 帖子给出了
My driveroot 的 id,不是吗?如果我知道与我共享>中的文件ID,有没有办法找到它的根? -
你解决过这个问题吗?
-
@casolorz 不,我没有找到任何方法来做到这一点。但我最后一次看到这个是在 2017 年 6 月,我不确定它在那之后是否改变了。
-
环顾四周,似乎要求与我共享文件夹将导致仅获取与您共享的根文件夹。如果您不想在那里显示他们,您可以过滤那些有父母的人。
标签: java google-drive-api