如何从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等完整字段,需在请求中显式指定字段范围,并处理分页逻辑:
指定需要的字段
- 使用
fields参数,若要获取所有修订相关字段,可使用通配符revisions(*);若只需特定字段,可逐个列举(例如revisions(id,modifiedTime,lastModifyingUser))。 - 必须包含
nextPageToken参数,用于后续分页请求。
- 使用
处理分页获取全部数据
当文件修订记录超过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
相关产品推荐
相关产品推荐

