You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Drive API通过Python可下载手动复制ID的文件,无法列出指定文件夹文件ID

问题原因

  • Google Drive API 的 files.list() 方法默认仅查询当前认证账号私人驱动器内的文件,其他账号共享给你的文件夹内容默认不会被纳入查询范围,即使你已经拥有该文件夹内文件的访问权限。
  • 你的调用代码缺少两个必填的跨驱动器查询参数:supportsAllDrives=True 和 includeItemsFromAllDrives=True,无法识别非当前账号私人驱动器下的共享内容。
  • 授权配置异常:朋友仅给你的服务账号授予了文件夹内单个文件的访问权限,未开放文件夹本身的列表权限,也会导致可以下载单个文件但无法拉取文件列表。

可行解决方案

方案1:补充API查询参数

修改listFiles函数中的API调用逻辑,补充跨驱动器查询参数,修改后的代码如下,90%以上的同类问题都可以通过这个修改解决:

fileIDList = []
fileNameList = []

def listFiles(folderID):
    files_list = service.files().list(
        q=" '{0}' in parents and trashed=false ".format(folderID),
        # 新增以下两个参数
        supportsAllDrives=True,
        includeItemsFromAllDrives=True
    ).execute()
    file_get = files_list.get('files', [])
    print('file_get: ', file_get)

    fileCounter = 0
    for file in file_get:
        fileIDList.append(file['id'])
        fileNameList.append(file['name'])
        print('file ' + str(fileCounter) + ': ' +  file['name'] + ' • ' + file['id'])
        fileCounter += 1

方案2:检查文件夹授权配置

如果修改参数后仍返回空列表,让朋友检查共享文件夹的授权配置:

  • 确认授权对象是你的服务账号邮箱,而非你个人谷歌账号邮箱
  • 确认给服务账号授予的权限等级为「查看者」及以上,且开放了文件夹的列表访问权限,不要只给单个文件单独授权。

方案3:适配共享驱动器场景

如果该文件夹属于企业/组织的共享驱动器,需要额外补充两个参数:

files_list = service.files().list(
    q=" '{0}' in parents and trashed=false ".format(folderID),
    supportsAllDrives=True,
    includeItemsFromAllDrives=True,
    # 新增共享驱动器相关参数
    corpora='drive',
    driveId='共享驱动器的ID'
).execute()

内容的提问来源于stack exchange,提问作者ZwiTrader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:18:00