Google云端硬盘API:搜索我可以编辑的所有文件,包括共享驱动器中的文件 q参数限制字段提出一些请求

问题描述

我认为标题很明确。我已经阅读并阅读了search files文档,但没有成功。

问题是当我尝试列出可以编辑的文件时,因为我是它们所在的共享驱动器的贡献者或管理者:我没有文件的直接权限,可以通过以下方式编辑它们:继承。

我尝试用q = 'myadress' in writers or 'myadress' in owners运行files.list请求,它返回除上述情况外我可以编辑的所有文件

(是的,我将与共享驱动器有关的所有选项都设置为true)。

搜索包括

  • 我可以编辑的“常规”驱动器中的文件
  • 当我对文件具有明确的“写入”权限时,该文件位于共享驱动器中

排除在外:

  • 我可以编辑的文件,因为它们位于我管理(或提供者)的共享驱动器中

有什么方法可以一次获得所有这些文件吗?

编辑:为了明确起见,我只对可以编辑的文件感兴趣。我可以列出所有对我可见的文件,然后签入响应对象(是否可以编辑它们),但这意味着列出的文件超出了必要。

谢谢!

解决方法

您是对的,那不可能

我相信我和你有类似的结果:

q参数

Search query terms

要搜索文件,请在files:files.list中使用q参数。

在上面引用的文章中,主驱动器中有许多文件参数,例如:writersownersreaders

但是,如果我对包含in writersin owners的查询提出了任何请求,并且仅因为我是父共享驱动器的成员而可以编辑文件 ,那么它不会显示。仅当有人进入单个文档并授予我编辑权限时,它才会显示。

我可以使用其他q参数,例如fullText,这样就可以毫无问题地返回共享驱动器项目。

更新:看来Google现在https://issuetracker.google.com/171363628已经意识到了这个问题。去上放一个☆,让他们知道它会影响您。


可能的解决方法

您可能很了解这些,但是为了将来的用户,我还是会列出它们。

限制字段

Reference

例如,使用具有以下参数的请求:

corpora = allDrives
includeItemsFromAllDrives = true
pageSize = 1000
supportsAllDrives = true
fields = files/id,files/name,files/capabilities/canEdit
key = [YOUR_API_KEY]

其中涉及极大地限制返回的字段,以提高性能和效率。在这种情况下,仅返回ID,名称和用户是否可以编辑的布尔值。在此请求中,pageSize设置为允许的最大值。

收到此响应后,可以将其过滤到内存中。如您所建议。

提出一些请求

我不确定您是否遇到配额问题,在这种情况下,此选项可能对您不实际。

如果您不愿意对API进行几次调用,则是确定您具有编辑访问权限的共享驱动器。 根据需要,您将拥有edit access on the files contained therein。一旦确定了是否可以编辑某个共享驱动器。您可以请求每个共享驱动器和主驱动器。对于您来说,哪种方法取决于您拥有多少共享驱动器以及更改的频率可能足够实际。

如果共享驱动器根本不经常更改,则可以保留共享驱动器ID的列表,您可以使用自动脚本定期对其进行更新。因此,您的请求量减少了。