Google api 谷歌驱动器API:搜索我可以编辑的所有文件,包括共享驱动器中的文件

Google api 谷歌驱动器API:搜索我可以编辑的所有文件,包括共享驱动器中的文件,google-api,google-drive-api,google-drive-shared-drive,Google Api,Google Drive Api,Google Drive Shared Drive,我认为这个标题相当明确。我读了又读,但没有成功 问题是当我试图列出我可以编辑的文件时,因为我是共享驱动器的参与者或管理者:我对这些文件没有直接权限,由于继承,我可以编辑它们 我尝试使用writers中的q='myaddress'或owners中的'myaddress'运行请求,它返回除上述情况外我可以编辑的所有文件 (是,我将与共享驱动器相关的所有选项设置为true) 包含在此搜索中的项目: 我可以编辑的“常规”驱动器中的文件 当我对共享驱动器中的文件具有明确的“写入者”权限时 不包括:

我认为这个标题相当明确。我读了又读,但没有成功

问题是当我试图列出我可以编辑的文件时,因为我是共享驱动器的参与者或管理者:我对这些文件没有直接权限,由于继承,我可以编辑它们

我尝试使用writers中的
q='myaddress'或owners中的'myaddress'运行请求,它返回除上述情况外我可以编辑的所有文件

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

包含在此搜索中的项目:

  • 我可以编辑的“常规”驱动器中的文件
  • 当我对共享驱动器中的文件具有明确的“写入者”权限时
不包括:

  • 我可以编辑的文件,因为它们位于我担任经理(或贡献者)的共享驱动器中
有没有办法一次就得到所有这些文件

编辑:为了清楚起见,我只对可以编辑的文件感兴趣。我可以列出所有对我可见的文件,然后检查响应对象是否可以编辑它们,但这意味着列出的文件比需要的要多

谢谢

你是对的,那是不可能的 我相信我也有类似的结果:

q
参数

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

在上面引用的文章中,主驱动器中的文件有许多参数,例如:
编写器
所有者
阅读器

但是,如果我在writers
或owners中使用包含
的查询发出任何请求,如果我只能编辑一个文件,因为我是父共享驱动器的成员,那么它将不会显示。只有当有人进入个人文档并授予我编辑权限时,它才会显示

我可以使用其他
q
参数,比如
fullText
,这样可以返回共享驱动器项,没有问题

更新:谷歌似乎已经意识到了这个问题。去打电话☆ 让他们知道这会影响你


可能的解决办法 您可能很了解这些,但我还是会列出它们,以方便将来的用户

限制字段

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

corpora = allDrives
includeItemsFromAllDrives = true
pageSize = 1000
supportsAllDrives = true
fields = files/id, files/name, files/capabilities/canEdit
key = [YOUR_API_KEY]
这涉及到极大地限制返回的字段以获得更好的性能和效率。在这种情况下,只返回id、名称和用户是否可以编辑的布尔值。在此请求中,
pageSize
设置为允许的最大值

一旦有了这个响应,就可以在内存中过滤它。正如你所建议的

提出几个要求 我不确定您是否遇到配额问题,在这种情况下,此选项可能对您不实用

如果您不反对对API进行一些调用,则需要确定您具有编辑访问权限的共享驱动器必要时你会有。确定是否可以编辑某个共享驱动器后。您可以请求每个共享驱动器和主驱动器。这取决于您有多少共享驱动器以及它们的更改频率,对您来说可能足够实用


如果共享驱动器根本不经常更改,您可以保留一个共享驱动器ID列表,您可以使用自动脚本定期更新该列表。所以你少了一个请求。

Hello@iansedano是的,我确认我能够列出所有我有明确“writer”权限的文件,无论它们是在常规驱动器还是在共享驱动器中。可能是因为无论文档位于何处,响应中仍然有一个“writers”数组。当然,您需要在查询中添加writers中的“your_address”。奇怪的是,我无法重现这一点,我已经尝试了很多次。所有文档中都有一个“writers”数组,这是对的,但查询系统的工作方式不同,至少在API资源管理器上是这样,它不会在查询时返回共享驱动器的任何结果。您的请求来自何处?如果您仅对此文档进行简单的获取(
文件.GET
),您可以在
编写器
数组中看到自己?不,例如,在我创建的文件中,在我也创建的共享驱动器中,没有
编写器
数组,有一个
许可ID
数组。如果我访问权限本身,则没有
writers
数组,或者只有
permissionDetails
将我列为
成员和
组织者。实际上,在我的普通驱动器中的普通文件中,也没有
写入程序
数组,只有
权限
一个。这就是为什么我说
q
参数以不同的方式工作。