Google Drive API:列出没有父级的文件

问题描述 投票:8回答:4

我管理的Google域中的文件已陷入糟糕状态;根目录中有数千个文件。我想识别这些文件并将它们移动到“我的驱动器”下面的文件夹中。

当我使用API​​列出其中一个孤立文件的父项时,结果是一个空数组。要确定文件是否是孤立的,我可以迭代我域中的所有文件,并请求每个文件的父项列表。如果列表为空,我知道该文件是孤立的。

但这非常缓慢。

无论如何使用Drive API来搜索没有父项的文件?

q参数的“parents”字段似乎对此没有用,因为它只能指定父列表包含一些ID。

更新:

我正在尝试找到一种快速方法来查找真正位于文档层次结构根目录的项目。也就是说,他们是“我的驱动器”的兄弟姐妹,而不是“我的驱动器”的孩子。

google-api google-drive-sdk google-api-client
4个回答
4
投票

在Java中:

List<File> result = new ArrayList<File>();
Files.List request = drive.files().list();
request.setQ("'root'" + " in parents");

FileList files = null;
files = request.execute();

for (com.google.api.services.drive.model.File element : files.getItems()) {
    System.out.println(element.getTitle());
}

如果文件或文件夹位于根目录中,则“root”是父文件夹


1
投票

野蛮,但简单,它的工作原理..

    do {
        try {
            FileList files = request.execute();

            for (File f : files.getItems()) {
                if (f.getParents().size() == 0) {
                        System.out.println("Orphan found:\t" + f.getTitle());

                orphans.add(f);
                }
            }

            request.setPageToken(files.getNextPageToken());
        } catch (IOException e) {
            System.out.println("An error occurred: " + e);
            request.setPageToken(null);
        }
    } while (request.getPageToken() != null
            && request.getPageToken().length() > 0);

1
投票

尝试在查询中使用它:

'root' in parents 

1
投票

documentation建议以下查询:is:unorganized owner:me

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