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

时间:2019-12-09 01:28:06

标签: google-api google-drive-api

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

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

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

我的问题是:

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

  2. 在2020年6月1日之前,我们可以通过将 supportsAllDrives includeItemsFromAllDrives 设置为,轻松地仅在“我的驱动器”中检索文件(共享驱动器中没有文件)假。但是,在2020年6月1日之后,如何仅在“我的云端硬盘”中检索文件?我知道我们可以过滤Files.list请求返回的结果,以摆脱共享驱动器中的文件,但是效率很低。应该有一种直接的方法来仅在“我的云端硬盘”中获取文件列表。

2 个答案:

答案 0 :(得分:3)

1- supportAllDrives includeItemsFromAllDrives 默认情况下为真。

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

您有两个选择:

  

'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."
 }
}

引用documentation

  

ownersownerNamesownedByMe —共享驱动器中的文件归共享驱动器所有,而不是单个用户拥有。

我建议您还使用 q 参数中的trashed = false,以确保搜索到的文件没有垃圾。

如果要将其作为功能请求提出,则可以转到Issue Tracker

答案 1 :(得分:1)

似乎已取消弃用。至少我在API描述中找不到这些Google Drive API注释,并且参数“ includeItemsFromAllDrives”和“ supportsAllDrives”仍然存在。