Google drive api Google Drive API-仅为';我的驱动器&x27;

Google drive api Google Drive API-仅为';我的驱动器&x27;,google-drive-api,Google Drive Api,我正在使用用于Python的Google Drive API客户端库 我只想提取“我的驱动器”中当前文件的元数据。 但是,使用service.files().list().execute()不仅可以生成“我的驱动器”中当前显示的文件列表,还可以生成以前删除的文件以及“谷歌照片”和“最近”中存储的文件列表 如何筛选接收到的文件列表,以便仅检索将下载到安装了Google Drive sync的客户端上的文件?您可以使用父资源和子资源,以清楚地识别“我的驱动器”作为文件夹的内容。此外,您可以在包含查询

我正在使用用于Python的Google Drive API客户端库

我只想提取“我的驱动器”中当前文件的元数据。 但是,使用service.files().list().execute()不仅可以生成“我的驱动器”中当前显示的文件列表,还可以生成以前删除的文件以及“谷歌照片”和“最近”中存储的文件列表


如何筛选接收到的文件列表,以便仅检索将下载到安装了Google Drive sync的客户端上的文件?

您可以使用父资源和子资源,以清楚地识别“我的驱动器”作为文件夹的内容。此外,您可以在包含查询的同时使用files.list方法来排除垃圾项目。只需包含'q'参数,并将查询列为字符串:

param = {}
if page_token:
    param['pageToken'] = page_token
param['q'] = 'trashed = false'
files = service.files().list(**param).execute()

您可以找到有关查询可用值的更多信息。

已更新

我找到了一种更好的方法来获取“我的驱动器”中的项目列表。相反,它更适合我们的用例

通过将
includeDeleted
includeSubscribed
设置为
false
,返回保存文件的更改列表,这些文件严格位于用户驱动器中(无最近文件,与我共享)。然而,它确实包括垃圾物品

这个响应更容易处理,因为我们只需要过滤标记为thrashed的项目。它仍然不完美,但至少它为我们省去了建造一棵树的麻烦

原始答案

我找到的最接近的方法是在owners中为“me”设置for
,trashed=false
。此查询将返回“我的驱动器”中的所有文件,以及(很遗憾)返回“与我共享”中的一些文件。然后,您可以从
根文件夹
构建一棵树,并删除孤立的树

另一方面,最干净的方法是在父级中查询
“root”,并逐层遍历树。但这不是很有效

注意:查询
不共享Withme
共享Withme=false
结果为400,否则将是最佳解决方案