使用Google服务账号与共享单元调用Drive API获取文件文件夹遇阻
解决Google Drive API查询共享单元文件返回空列表的问题
核心问题:缺失关键参数
你的调用缺少两个必须的参数,这是无法获取共享驱动器(Shared Unit)内容的主要原因:
includeItemsFromAllDrives=True:默认情况下API仅返回个人驱动器内容,必须显式开启该参数才能包含共享驱动器中的文件/文件夹。supportsAllDrives=True:替代旧的supportsTeamDrives=True参数,声明客户端支持共享驱动器操作,确保API正确处理相关请求。
另外,你第二个调用的查询语法错误:parents in '{parent_folder}'格式不正确,正确写法应为'{parent_folder}' in parents。
修正后的代码示例
方式1:查询指定父文件夹下的内容
parent_folder = "你的父文件夹ID" results = drive_service.files().list( q=f"'{parent_folder}' in parents", spaces='drive', includeItemsFromAllDrives=True, supportsAllDrives=True, fields='nextPageToken, files(id, name, mimeType)' # 按需指定返回字段 ).execute() files = results.get('files', []) print(files)
方式2:查询整个共享驱动器的根目录内容
如果需要获取共享驱动器根目录下的所有内容,可直接使用共享驱动器ID作为父ID:
drive_id = "0AOELwkzr21lFUk9VA" # 从drives().list获取的共享单元ID results = drive_service.files().list( q=f"'{drive_id}' in parents", spaces='drive', includeItemsFromAllDrives=True, supportsAllDrives=True, fields='nextPageToken, files(id, name, mimeType)' ).execute() files = results.get('files', []) print(files)
额外排查点
- 验证ID准确性:检查父文件夹ID或共享驱动器ID是否复制正确,避免因ID错误导致无结果。
- 处理分页逻辑:若共享单元内文件数量较多,首次调用可能仅返回部分内容,需通过
nextPageToken循环获取全部文件。 - 确认API版本:确保使用Google Drive API v3版本,v2版本的参数逻辑与v3不兼容。
内容的提问来源于stack exchange,提问作者Godoy32
相关产品推荐
相关产品推荐

