【问题标题】:How to search file inside a specific folder in google API v3如何在 google API v3 中的特定文件夹中搜索文件
【发布时间】:2018-01-08 00:43:48
【问题描述】:

由于我使用的是谷歌 api 的 v3,所以我必须使用 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,它将在特定文件夹中提供文件。

【问题讨论】:

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


    【解决方案1】:

    现在可以使用 drives:list 中的 q 参数中的术语 parents 来执行此操作。例如,如果您想在 ID 为 folder_id 的文件夹中查找所有电子表格,您可以使用以下 q 参数(在我的示例中使用 python):

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

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

    更多关于drives:list方法的信息可以看here,更多其他术语可以放到q参数here

    【讨论】:

      【解决方案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";
      

      【讨论】:

        【解决方案3】:

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

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

         fullText contains 'my_unique_keyword'
        

        【讨论】:

          【解决方案4】:

          您可以使用此方法从 google drive 中搜索文件:

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

          【讨论】:

          • 这是对文件的一般搜索,而不是“在特定文件夹名称中搜索文件”。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多