2020 年 6 月 1 日之后使用 Google Drive API 获取“我的云端硬盘”中的文件列表?

sky*_*ree 3 google-api google-drive-api

我知道 Google Drive API 将在 2020年年中强制执行更新。但是,我对 Drive API 文档感到非常困惑,如Files.listChanges.list 中所述

supportAllDrives : Deprecated - 请求应用程序是否同时支持我的驱动器和共享驱动器。此参数仅在 2020 年 6 月 1 日之前有效。之后假定所有应用程序都支持共享驱动器。(默认值:false)

includeItemsFromAllDrives:已弃用 - 结果中是否应同时包含“我的云端硬盘”和共享云端硬盘项目。此参数仅在 2020 年 6 月 1 日之前有效。之后共享云端硬盘项目将包含在结果中。(默认值:false)

我的问题是:

  1. 这是否意味着如果 API 请求中不包含(或设置为 false)这两个参数,那么在 2020 年 6 月 1 日之后,supportsAllDrivesincludeItemsFromAllDrives将自动变为true

  2. 在 2020 年 6 月 1 日之前,我们可以通过将supportsAllDrives & includeItemsFromAllDrives设置为 false来轻松检索仅在“我的驱动器”中的文件(共享驱动器中没有文件)。但是在2020年6月1日之后,我如何只在“我的驱动器”中检索文件??我知道我们可以过滤 Files.list 请求返回的结果来删除共享驱动器中的文件,但它非常低效。应该有一个直接的方法来获取“我的驱动器”中的文件列表。

Kes*_*ssy 6

1 -默认情况下supportAllDrives & includeItemsFromAllDrives将变为 true。

2 - 由于没有直接的方法来检索您自己的文件,您必须在Drive : list上使用q参数。

您有两个选择:

'root' in parents这将让你你有你的文件和文件夹我的网盘不包括共享的,但它不会显示文件夹内的文件,只需在头版的那些我的网盘

最佳方法:

'me' in owners这将为您提供您拥有的所有文件。这是最佳选择,因为您无法强制共享云端硬盘项目的所有者。

如果您尝试强制自己成为共享云端硬盘项目的所有者,您将获得以下结果:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "ownerOnTeamDriveItemNotSupported",
    "message": "Owner role is invalid for shared drive items."
   }
  ],
  "code": 403,
  "message": "Owner role is invalid for shared drive items."
 }
}
Run Code Online (Sandbox Code Playgroud)

引用文档

owners, ownerNames, ownedByMe— 共享云端硬盘中的文件归共享云端硬盘所有,而非个人用户所有。

我建议您trashed = falseq参数中也使用其中的一部分,以确保您的搜索中不会出现垃圾文件。

如果您想将此作为功能请求提交,您可以转到问题跟踪器