我有两个 Google Apps 项目。我不确定这是否相关,但一个附加到我的驱动器根目录中的文档,另一个附加到我是经理的共享驱动器中的文档。
我希望能够使用 Drive API 列出这些 Apps 项目并最终导出它们。
我按照 https://developers.google.com/apps-script/guides/import-export 中的“列出现有项目”示例,但是当我在自己的帐户上运行请求时,它返回一个空的“项目" 数组,没有错误。
我正在使用 OAuth 2.0 游乐场 (https://developers.google.com/oauthplayground) 进行测试,如下所示;
结果总是一个空的项目数组,例如:
{
"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"
}
而且,如果我更改请求的 mimeType(例如 https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application%2Fvnd.google-apps.document'+and+'me'+在+所有者)然后我按预期看到文件。
最后,在 OAuth 2.0 Playground 中,我尝试添加额外的范围 https://www.googleapis.com/auth/script.projects.readonly,但是当我点击“授权 API”时,我得到了
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 项目,我第一次在我的 Drive 目录列表中遇到缺少的 Apps 项目文件,并将 /auth/script.projects.readonly 范围添加到我的服务帐户以及请求的范围我的应用程序的 OAuth 2.0 配置。我没有收到有关应用程序被阻止的通知,但脚本文件仍然没有返回到文件列表中,因此添加这个额外的范围似乎没有帮助。
更新 1:感谢 Tanaike 提到的相关问题 (https://issuetracker.google.com/issues/111149037),我确定问题仅限于容器绑定的应用程序(那些在文档、工作表中创建的应用程序) , ETC。)。独立应用程序(以“我”为容器的应用程序)按预期由 Drive files.list API 列出。
更新 2:此行为实际上记录在 https://developers.google.com/apps-script/guides/import-export:
只能导入或导出独立脚本。集装箱绑定 无法通过 Google Drive REST API 访问脚本。