为何Google Drive API无法列出Google Apps项目?
无法通过Drive API列出容器绑定型Google Apps脚本项目
问题背景
我拥有两个Google Apps脚本项目:一个绑定在个人云端硬盘根目录的文档中,另一个绑定在我具备管理员权限的共享驱动器内的文档中。我需要通过Drive API列出这些项目并完成导出操作,但按照官方文档的「列出现有项目」示例执行后,返回的items数组始终为空,且无任何错误提示。
排查过程
我使用OAuth 2.0 Playground进行了以下测试:
- 选择的权限范围:
https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.scripts
- 完成账户授权并兑换授权码获取令牌后,发送了多个GET请求:
- Drive v2 API(带所有权筛选):
GET https://www.googleapis.com/drive/v2/files?q=mimeType%3D%27application%2Fvnd.google-apps.script%27+and+%27me%27+in+owners - Drive v2 API(无所有权筛选):
GET https://www.googleapis.com/drive/v2/files?q=mimeType%3D%27application%2Fvnd.google-apps.script%27 - Drive v3 API请求:
GET https://www.googleapis.com/drive/v3/files?q=mimeType%3D%27application%2Fvnd.google-apps.script%27
- Drive v2 API(带所有权筛选):
所有请求均返回空的items数组,示例响应如下:
{ "incompleteSearch": false, "items": [], "kind": "drive#fileList", "etag": "\"skD00[redacted]\"", "selfLink": "https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application/vnd.google-apps.script'+and+'me'+in+owners" }
但当我将请求中的MIME类型修改为application/vnd.google-apps.document时,能够正常返回对应的文档列表,说明API调用流程本身是正常的。
额外权限测试
尝试添加https://www.googleapis.com/auth/script.projects.readonly权限范围时,OAuth 2.0 Playground弹出提示:
This app is blocked This app tried to access sensitive info in your Google Account. To keep your account safe, Google blocked this access.
随后我回到最初的PHP项目,为服务账户及应用的OAuth 2.0配置添加了该权限范围,未收到应用被阻止的通知,但脚本项目仍未出现在文件列表中,说明添加该权限无法解决问题。
更新:问题范围确认
经确认,仅容器绑定型Apps脚本项目无法通过Drive API列出,独立型(以"me"为容器)的脚本项目可以正常通过Drive files.list API返回结果。
内容的提问来源于stack exchange,提问作者BobS
相关产品推荐
相关产品推荐

