首页 > 解决方案 > 是否有一种有效的方法可以在 Google Drive API 中查询所有用户的所有文件?

问题描述

我能完成这项工作的唯一方法是遍历所有用户并查询每个用户有权访问的所有文件。这会产生很多冗余结果,因为如果有一个在组织范围内共享的文件,它将为每个用户的每个查询返回。以这种方式返回组织内的所有文件大约需要 10 分钟。

这是我的代码的一个粗略示例:

gs_directory = build('admin', 'directory_v1', credentials=creds.with_subject("admin@mydomain.com"))

# Call the Admin SDK Directory API
results = gs_directory.users().list(domain = 'mydomain.com').execute()
users = results.get('users', [])

files = []

if not users:
    print('No users in the domain.')
for user in users:
    print(user["primaryEmail"])
    gs_drive = build('drive', 'v3', credentials=creds.with_subject(user["primaryEmail"]))

    # Call the Drive v3 API
    results = gs_drive.files().list(corpora='user',
        pageSize=10, fields="nextPageToken, files(id, name)").execute()

    items = results.get('files', [])

    while results.get('nextPageToken', None):
        results = gs_drive.files().list(corpora='user', pageToken=results['nextPageToken'],
            pageSize=10, fields="nextPageToken, files(id, name)").execute()

        items += results.get('files', [])

    for item in items:
        print(u'{0} ({1})'.format(item['name'], item['id']))

标签: pythongoogle-drive-api

解决方案


推荐阅读