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

2022-09-04 03:08:02

由于我正在使用谷歌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;
}

但是在这种方法中,它为我提供了所有生成的文件,我不想要这些文件。我想创建一个文件列表,它将在特定文件夹中提供文件。


答案 1

现在可以使用 中的参数中的术语来执行此操作。例如,如果要查找具有id的文件夹中的所有电子表格,则可以使用以下参数执行此操作(我在示例中使用python):parentsqdrives:listfolder_idq

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

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

有关方法的更多信息可以在这里看到,您可以阅读有关其他术语的更多信息,您可以在此处放置参数。drives:listq


答案 2

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

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

推荐