2

问题

在我的团队云端硬盘备份系统的第一阶段,我首先需要扫描给定团队云端硬盘中的文件,以确定要复制哪些文件进行备份。

Owner由于我使用的凭据(在云控制台中设置),我(想?)对 Team Drive 的文件和文件夹拥有完全权限。

尽管如此,我的问题是,当我查询 REST API 以获取给定团队驱动器的文件列表时,结果与文档不符。返回的文件对象仅包含 5 个字段,它们是:

  • kind, name, id, mimeType,teamDriveId

根据提供的文档,我应该会收到更多字段。

下面是我用来查询 API 和输出的代码。

简化源

credentials = get_credentials() # retrieves and processes app credentials
drive = get_drive_api(credentials) # get the drive API v3 using httplib2 and discovery
query = drive.files().list(
    pageSize = 10,
    corpora = 'teamDrive',
    supportsTeamDriveItems = True,
    includeTeamDrives = True,
    teamDriveId = "..."
)
results = query.execute() # contact the REST API
files = results.get('files', [])
for file in files:
    print(file)

对于给定的 Team Drive,输出为

{
  'kind': 'drive#file',
  'id': '...',
  'name': 'filename',
  'mimeType': 'application/vnd.google-apps.document',
  'teamDriveId': '...'
}

根据文档,这显然不是预期的输出。

关于我没有得到完整的预期数据的原因有什么见解吗?

4

1 回答 1

4

使用 Google Drive API v3,默认情况下不再返回完整资源。使用fields查询参数请求返回的特定字段。如果未指定,则仅返回常用字段的子集。

要获取资源的所有可用字段,您可以设置fields*.

例如:

query = drive.files().list(
    pageSize = 10,
    corpora = 'teamDrive',
    supportsTeamDriveItems = True,
    includeTeamDrives = True,
    teamDriveId = "...",
    fields="*"  # or maybe "files(id,name,capabilities/canShare),nextPageToken"
)
于 2017-09-12T16:06:45.807 回答