Python 有没有一种有效的方法可以在Google Drive API中查询所有用户的所有文件?

Python 有没有一种有效的方法可以在Google Drive API中查询所有用户的所有文件?,python,google-drive-api,Python,Google Drive Api,我完成这项工作的唯一方法是遍历所有用户并查询每个用户都有权访问的所有文件。这会产生大量冗余的结果,因为如果有一个文件在整个组织范围内共享,那么每个用户的每个查询都会返回该文件。以这种方式返回组织内的所有文件大约需要10分钟 下面是我的代码的一个简单示例: gs_directory = build('admin', 'directory_v1', credentials=creds.with_subject("admin@mydomain.com")) # Call the Admin SDK

我完成这项工作的唯一方法是遍历所有用户并查询每个用户都有权访问的所有文件。这会产生大量冗余的结果,因为如果有一个文件在整个组织范围内共享,那么每个用户的每个查询都会返回该文件。以这种方式返回组织内的所有文件大约需要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']))

手术的最终结果是什么?搜索每个用户将返回相同的文件,如果该文件与用户共享,因此存储在其驱动器中。您可以使用检索到的每个文件的id设置一个数组,并让函数检查该文件是否已在数组中。感谢回复@Kessy。虽然我的示例中没有显示,但这基本上就是我在项目中所做的。我只是希望有一种更有效的方法可以通过API获得这些独特的结果。嗨,你有没有设法用一种更有效的方法来做到这一点?如果没有,你能分享更多关于你是如何做的细节,并提供更多关于如何再现你正在做的事情的细节,这样我就可以像你做的那样尝试了。手术的最终结果是什么?搜索每个用户将返回相同的文件,如果该文件与用户共享,因此存储在其驱动器中。您可以使用检索到的每个文件的id设置一个数组,并让函数检查该文件是否已在数组中。感谢回复@Kessy。虽然我的示例中没有显示,但这基本上就是我在项目中所做的。我只是希望有一种更有效的方法可以通过API获得这些独特的结果。嗨,你有没有设法用一种更有效的方法来做到这一点?如果没有,你能分享更多关于你是如何做的细节,并提供更多关于如何重现你正在做的事情的细节,这样我就可以像你做的那样尝试了?