You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google Drive API获取lastModifyingUser及完整修订字段?

问题描述

我需要获取Google Drive中某文件的修订记录列表,现有代码如下:

from googleapiclient.discovery import build
# obtain creds using oauth flow, removed for brevity
service = build("drive", "v3", credentials=creds)
file_id = "some file ID"
revisions = service.revisions().list(fileId=file_id, pageSize=100).execute()

revisions["revisions"]是由dict组成的list,每个dict仅包含以下键:

revisions["revisions"][0].keys()
# returns dict_keys(['id', 'mimeType', 'kind', 'modifiedTime'])

但我希望获取如lastModifyingUser等更多信息。根据Google Drive API文档,lastModifyingUser及其他诸多字段均可通过API获取,因此我对当前代码未返回这些字段感到困惑。请问如何获取包含lastModifyingUser及文档所列全部字段的文件修订记录列表?

解决方案

Google Drive API v3为优化性能,默认仅返回精简字段集合。要获取lastModifyingUser等完整字段,需在请求中显式指定字段范围,并处理分页逻辑:

  1. 指定需要的字段

    • 使用fields参数,若要获取所有修订相关字段,可使用通配符revisions(*);若只需特定字段,可逐个列举(例如revisions(id,modifiedTime,lastModifyingUser))。
    • 必须包含nextPageToken参数,用于后续分页请求。
  2. 处理分页获取全部数据
    当文件修订记录超过pageSize(此处为100)时,需要通过nextPageToken循环请求,直到获取所有修订记录。

修改后的完整代码:

from googleapiclient.discovery import build
# 此处省略OAuth认证获取creds的代码
service = build("drive", "v3", credentials=creds)
file_id = "some file ID"

all_revisions = []
page_token = None

while True:
    response = service.revisions().list(
        fileId=file_id,
        pageSize=100,
        fields="nextPageToken, revisions(*)",  # 获取所有修订字段及分页令牌
        pageToken=page_token
    ).execute()
    
    # 合并当前页的修订记录
    all_revisions.extend(response.get("revisions", []))
    # 更新分页令牌,无令牌则终止循环
    page_token = response.get("nextPageToken")
    if not page_token:
        break

# 验证结果,此时每个修订项包含完整字段
print(all_revisions[0].keys())

执行后,all_revisions中的每个字典会包含API文档列出的所有修订字段,包括lastModifyingUser。

内容的提问来源于stack exchange,提问作者jamiet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:12:13