未获取 Google 驱动器 API 的共享文件夹中的项目列表

Not getting list of items in shared folders with Google Drive API

我试图在 Python 中获取 Google 驱动器 API 的文件夹列表。我可以在我的驱动器文件夹中获取列表,但无法获取共享文件夹的项目列表。我使用 GCP 服务帐户作为凭据,并且我已经将服务帐户设置到共享文件夹中。谁有解决办法??我应该使用另一个参数吗?非常感谢。

drive = build('drive', 'v3', credentials=credentials)

folderId = "xxxxxxxxxxx"

query = f"parents = '{folderId}'"
response = drive.files().list(q=query,includeItemsFromAllDrives=True,supportsAllDrives=True).execute()

files = response.get('files')
nextPageToken = response.get('nextPageToken')

while nextPageToken:
    response = drive.files().list(q=query,includeItemsFromAllDrives=True,supportsAllDrives=True).execute()
    files.extend(response.get('files'))
    nextPageToken = response.get('nextPageToken')

df = pd.DataFrame(files)

你的问题是你打电话的方式parents

query = f"parents = '{folderId}'"

Parents = 应该是 parents

query = f"parents in '{folderId}'"

背景信息,以防您的文件夹文件 ID 错误。

在使用 Q 参数时从简单开始。你能通过搜索 mimetype 找到文件夹吗?

page_token = None
while True:
    response = drive_service.files().list(q="mimeType='application/vnd.google-apps.folder'",
                                          
                                          fields='nextPageToken, files(id, name)',
                                          pageToken=page_token).execute()
    for file in response.get('files', []):
        # Process change
        print 'Found file: %s (%s)' % (file.get('name'), file.get('id'))
    page_token = response.get('nextPageToken', None)
    if page_token is None:
        break

Parents 在

假设您在上一次调用中取回文件夹,您需要获取该调用的文件 ID 并将其发送到本次调用。

page_token = None
while True:
    response = drive_service.files().list(q="parents in 'FILEIDFROMPREVIOUSCALL'",
                                          
                                          fields='nextPageToken, files(id, name)',
                                          pageToken=page_token).execute()
    for file in response.get('files', []):
        # Process change
        print 'Found file: %s (%s)' % (file.get('name'), file.get('id'))
    page_token = response.get('nextPageToken', None)
    if page_token is None:
        break