如何在google API v3中搜索特定文件夹中的文件

时间:2017-08-01 08:39:00

标签: java google-api google-drive-api

因为我正在使用google api的v3,所以我不想使用父和chidren列表我必须使用fileList,所以现在我想搜索特定文件夹中的文件列表。 所以有人可以建议我做什么?

以下是我用来搜索文件的代码:

private String searchFile(String mimeType,String fileName) throws IOException{
    Drive driveService = getDriveService();
    String fileId = null;
    String pageToken = null;
    do {
        FileList result = driveService.files().list()
                .setQ(mimeType)
                .setSpaces("drive")
                .setFields("nextPageToken, files(id, name)")
                .setPageToken(pageToken)
                .execute();
        for(File f: result.getFiles()) {
            System.out.printf("Found file: %s (%s)\n",
                    f.getName(), f.getId());
            if(f.getName().equals(fileName)){
                //fileFlag++;
                fileId = f.getId();
            }
        }
        pageToken = result.getNextPageToken();
    } while (pageToken != null);

    return fileId;
}

但是在这个方法中它给了我生成的所有我不想要的文件。我想创建一个FileList,它将文件放在一个特定的文件夹中。

4 个答案:

答案 0 :(得分:1)

现在可以使用parentsq参数中的术语drives:list来做到这一点。例如,如果要在ID为folder_id的文件夹中查找所有电子表格,则可以使用以下q参数(在我的示例中为python)进行查找:

q="mimeType='application/vnd.google-apps.spreadsheet' and parents in '{}'".format(folder_id)

请记住,您应该找出要在其中查找的文件夹文件的ID。您可以使用相同的drives:list

答案 1 :(得分:0)

尚不支持按文件夹名称搜索文件。这是google forum的要求,但到目前为止还没有。不过,请尝试查找Search for Files中提供的其他替代搜索过滤器。

要有创意。例如,确保某个文件夹中的文件包含一个唯一的关键字,然后您可以使用

进行查询
 fullText contains 'my_unique_keyword'

答案 2 :(得分:0)

您可以使用此方法从Google云端硬盘搜索文件。

    Files.List request = this.driveService.files().list();
    noOfRecords = 100;
    request.setPageSize(noOfRecords);
    request.setPageToken(nextPageToken);
    String searchQuery = "(name contains 'Hello')";
    if (StringUtils.isNotBlank(searchQuery)) {
        request.setQ(searchQuery);
    }
    request.execute();

答案 3 :(得分:0)

要在特定目录中搜​​索,您必须指定以下内容:

q : name = '2021' and mimeType = 'application/vnd.google-apps.folder' and '1fJ9TFZOe8G9PUMfC2Ts06sRnEPJQo7zG' in parents

此示例将名为“2021”的文件夹搜索到包含 1fJ9TFZOe8G9PUMfC2Ts06sRnEPJQo7zG 的文件夹中

就我而言,我正在用 C++ 编写代码,请求 url 为:

string url = "https://www.googleapis.com/drive/v3/files?q=name+%3d+%272021%27+and+mimeType+%3d+%27application/vnd.google-apps.folder%27+and+trashed+%3d+false+and+%271fJ9TFZOe8G9PUMfC2Ts06sRnEPJQo7zG%27+in+parents";