Google Drive API:drive_service.files().list() 上的 get() 方法有记录吗?

Google Drive API: the get() method on drive_service.files().list() documented?

this link Python 中有一个 get 方法:

response = drive_service.files().list(q="mimeType='image/jpeg'",
                                          spaces='drive',
                                          fields='nextPageToken, files(id, name)',
                                          pageToken=page_token).execute()
    for file in response.get('files', []):

我猜 get() 方法会得到一个文件列表,如果 none,它会 return 一个空列表,但是这在哪里记录的? API doc 没有。它只是说:

Returns:
  An object of the form:
...

它没有记录任何方法。

files.list 方法 return 文件列表响应

{
  "kind": "drive#fileList",
  "nextPageToken": string,
  "incompleteSearch": boolean,
  "files": [
    files Resource
  ]
}

文件列表响应包含由请求编辑的任何 file resources return 的列表。如果没有 returned,文件将是一个空列表。

默认情况下它不会return一个完整的文件资源对象,一些字段为空。

 {
   "kind": "drive#file",
   "id": "1x8-vD-XEA5Spf3qp8x2wltablGF22Lpwup8VtxNY",
   "name": "Experts Activity Dump go/ExpertsActivities",
   "mimeType": "application/vnd.google-apps.spreadsheet"
  },

解决这个问题的方法是添加一个可选参数 fields=* 然后你会得到一个完整的文件资源对象。但是,这可能会导致非常大的请求。

file.get 方法 return 是请求的文件 ID 的 file resources。所以你必须将你想要请求的文件的 file.id 传递给它。

背景信息原始版本。

在 Google 驱动器 v3 的原始版本中。 File.list 不适用于 fields=* 它只适用于 returned 默认字段,其他所有内容都为空。这迫使我们在每个需要完整响应的文件上使用 File.get。这已经得到修复,使它更容易并且只需要一次调用 api 来获取填充对象的所有属性。

问题仍然存在,这是一开始的错误还是按预期工作,他们对其进行了修补以停止占用我们所有的配额。

从你的脚本来看,我认为for file in response.get('files', []):get是built-in类型的方法。 Ref

fields='nextPageToken, files(id, name)'fieldsdrive_service.files().list() returns 一个像 {"nextPageToken": "###", "files": [{"id": "###", "name": "###"},,,]} 的对象。 Ref 当找不到 mimeType='image/jpeg' 的文件时,返回 {"files": []}

这种情况下,也可以使用response.get('files')

参考文献: