首页 > 解决方案 > Google Drive API:列出共享驱动器下的所有文件夹

问题描述

关于列出共享驱动器下的文件夹的问题。

通过将查询参数传递为以下方式调用下面的 API 时,我能够获得成功的响应:

API:https ://developers.google.com/drive/api/v3/reference/files/list?apix_params=%7B%22includeTeamDriveItems%22%3Atrue%2C%22q%22%3A%22%270AATe_aghhsdfvbdfg%27%20in %20parents%20and%20mimeType%20%3D%20%27application%2Fvnd.google-apps.folder%27%22%2C%22supportsAllDrives%22%3Atrue%7D

成功响应:

{
 "kind": "drive#fileList",
 "incompleteSearch": false,
 "files": [
 {
  "kind": "drive#file",
  "id": "1E-c0rNCQMlQvXNUGTKSWdPHBOwwzjtcf",
  "name": "Integration",
  "mimeType": "application/vnd.google-apps.folder",
  "teamDriveId": "0AATe_aghhsdfvbdfg",
  "driveId": "0AATe_aghhsdfvbdfg"
 },
 {
  "kind": "drive#file",
  "id": "1QOMRSPuE1msJJmyr3yJOMZsBrn3nrtAx",
  "name": "Folder1",
  "mimeType": "application/vnd.google-apps.folder",
  "teamDriveId": "0AATe_aghhsdfvbdfg",
  "driveId": "0AATe_aghhsdfvbdfg"
 }
 ]
}

问题:从响应中,它返回共享驱动器下的现有文件夹。是否也可以一次获取父文件夹下的所有子文件夹,而不必每次都在查询参数下传递父文件夹 ID?(例如:获取父文件夹“Integration”下的所有子文件夹)

标签: google-drive-api

解决方案


  • 父文件夹下的文件夹可以通过一个 API 调用通过搜索查询检索,如下所示。在这种情况下,'folderId' in parents用作搜索查询。

      curl \
        'https://www.googleapis.com/drive/v3/files?corpora=drive&driveId=driveId&includeItemsFromAllDrives=true&q=%27folderId%27%20in%20parents&supportsAllDrives=true' \
        --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
        --header 'Accept: application/json' \
        --compressed
    
    • 并且,当您要检索 2 个文件夹下的文件时,您还可以使用以下示例。在这种情况下,'folderIdA' in parents or 'folderIdB' in parents用作搜索查询。

        curl \
          'https://www.googleapis.com/drive/v3/files?corpora=drive&driveId=driveId&includeItemsFromAllDrives=true&q=%27folderIdA%27%20in%20parents%20or%20%27folderIdB%27%20in%20parents&supportsAllDrives=true' \
          --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
          --header 'Accept: application/json' \
          --compressed
      
    • 从您的问题来看,我认为您已经完成了上述工作。

  • 在当前阶段,无法直接检索到父文件夹下的所有嵌套子文件夹。

    • 在这种情况下,需要准备一个脚本。

    • 不幸的是,在当前阶段,这似乎是谷歌方面的当前规范。

笔记:

  • 在大多数情况下,includeItemsFromAllDrives=true并且supportsAllDrives=true可以使用。但我有一些情况corpora=drive也是driveId=###必需的。因此,当您在共享云端硬盘中无法检索文件时,请尝试使用此功能。

参考:


推荐阅读