如何通过Google Drive V3 REST API获取指定路径文件的item id
Google Drive V3 API 按路径查询文件ID操作指南
Google Drive 本身采用基于ID的存储架构,没有原生的路径概念,用户感知到的路径是多层父文件夹的层级关系拼接生成的,因此要按路径查询文件ID,需要逐层查询每一级文件夹的ID,最终定位到目标文件。
1 拆分目标路径
以示例路径/root/Myfiles/test.txt为例:
- Google Drive 个人根目录固定别名为
root,无需额外查询ID - 拆分后层级为:根目录(root)→ 子文件夹
Myfiles→ 目标文件test.txt
2 q查询参数核心规则
q参数是Drive API的过滤查询语句,本次查询用到的核心过滤条件如下:
name:匹配文件/文件夹名称,字符串需要用单引号包裹parents:匹配父文件夹的ID,ID值需要用单引号包裹mimeType:区分资源类型,文件夹的固定MIME类型为application/vnd.google-apps.foldertrashed = false:排除已移入回收站的资源,避免误匹配
3 逐层查询操作
3.1 查询根目录下Myfiles文件夹的ID
构造q参数:
'root' in parents and name = 'Myfiles' and mimeType = 'application/vnd.google-apps.folder' and trashed = false
完整请求示例(注意参数需要做URL编码):
GET https://www.googleapis.com/drive/v3/files?q='root'%20in%20parents%20and%20name%20%3D%20'Myfiles'%20and%20mimeType%20%3D%20'application/vnd.google-apps.folder'%20and%20trashed%20%3D%20false
请求头需要携带授权信息:Authorization: Bearer <你的接口访问令牌>,授权范围至少包含https://www.googleapis.com/auth/drive.readonly。
返回结果中files数组的id字段就是Myfiles文件夹的ID,假设此处拿到的ID为123abc_xyz。
3.2 查询Myfiles文件夹下test.txt的ID
将上一步拿到的文件夹ID作为父ID,构造q参数:
'123abc_xyz' in parents and name = 'test.txt' and trashed = false
完整请求示例:
GET https://www.googleapis.com/drive/v3/files?q='123abc_xyz'%20in%20parents%20and%20name%20%3D%20'test.txt'%20and%20trashed%20%3D%20false
返回结果中files数组的id字段就是你需要的目标文件item-id。
注意事项
- 如果同一层级下存在重名的文件/文件夹,返回的
files数组会包含多个结果,你需要结合其他属性(比如文件大小、创建时间)二次过滤得到目标资源 - q参数中的特殊字符(空格、等号、单引号等)必须做URL编码,否则会触发请求报错
- 如果目标路径层级更多,按照上述逻辑逐层查询每一级文件夹的ID,直到最后一级查询目标文件即可
内容的提问来源于stack exchange,提问作者Hyndrix
相关产品推荐
相关产品推荐

