使用Google Drive API v3获取共享盘子目录文件列表时提示共享盘未找到
问题根因
两类ID的用途完全混淆,导致参数传值不符合接口要求。
具体错配点
- 报错信息明确指向
driveId参数无效:你传入的1S_4HV0vi3zPr-gt2lRTCp5hAJFooElCn是“2021”这个子文件夹的文件ID,但driveId参数从设计层面就只接受共享盘的根ID,根本不支持传文件夹ID做内容筛选。 - 从你贴的子文件夹返回字段可以看到,这个文件夹所属的共享盘根ID是
0ACNyBdDB5wLXUk9PVA,这才是合法的driveId入参值。你把文件夹ID当成共享盘ID传进参数,接口自然找不到对应的共享盘资源,抛出“Shared drive not found”的校验错误。
正确的调试参数配置
要实现拉取这个“2021”子文件夹下所有文件的需求,参数需要做如下调整:
corpora=drive(你之前写的Corpra是拼写错误,修正为正确参数名)driveId=0ACNyBdDB5wLXUk9PVA(替换为共享盘本身的根ID,绝对不能传子文件夹ID)includeItemsFromAllDrives=truesupportsAllDrives=truepageSize=250- 新增查询参数:
q='1S_4HV0vi3zPr-gt2lRTCp5hAJFooElCn' in parents
这个查询条件的作用是筛选所有父节点为目标子文件夹的文件,就是你需要的“仅获取指定子文件夹内文件”的效果。
实操注意事项
driveId参数的唯一作用是告知接口你要访问哪一个共享盘,所有共享盘内部的文件夹层级筛选、文件类型过滤,都必须通过q参数的条件判断实现,不能靠driveId做筛选。- 如果不需要在返回结果里包含嵌套的其他文件夹条目,可以在
q查询语句后面追加过滤条件:and mimeType != 'application/vnd.google-apps.folder',过滤掉文件夹类型的条目,只返回实际业务文件。
内容的提问来源于stack exchange,提问作者Michael Lachina
相关产品推荐
相关产品推荐

