从google drive v3 java api中检索与我共享的顶级文件

时间:2017-05-20 20:05:37

标签: java google-drive-api

我想使用java api(v3)仅查询来自google驱动器的顶级文件。 (顶级,我的意思是我不想递归进入文件夹)

我检查了this question,但它似乎没有一个合适的解决方案(即使它有一个公认的解决方案)。

我尝试了几件事:

1)我尝试设置查询

 // 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'在“我的驱动器”文件的“父母”中,我尝试了几个查询:

  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)");

即使在输出字段中包含父级 File.getParents()也会提供 NULL (即使对于有父级的文件)。

问题

我们是否可以使用 Files.list()获取每个文件的父母信息?

有没有办法让文件达到与我共享的顶级文件夹?(通过添加一些查询以及 sharedWithMe = true

1 个答案:

答案 0 :(得分:0)

使用Google Drive API V3中的以下代码,我只能获得与我共享的根目录文件列表

首先使用以下代码获取与我共享的文件和文件夹

FileList sharedWithMeResult = drive.files().list().setQ("sharedWithMe=true").execute();

要过滤出文件夹,您可以

List<com.google.api.services.drive.model.File> sharedWithMeFiles = sharedWithMeResult.getFiles();

for (com.google.api.services.drive.model.File file : sharedWithMeFiles) 
{
    if(file.getMimeType().contains("vnd.google-apps.folder"))
        continue;
    else
       System.out.println("Shared File Name = " + file.getName());
}