如何使用 Google 驱动器 API 检索最近的垃圾文件列表

How to retrieve a recent list of trashed files using Google Drive API

我最近在 Google 驱动器中删除了相当多的文件,它们被移到了回收站。我想永久删除它们,但垃圾箱中的文件不能按删除日期排序,只能按修改日期排序(删除时不更新)。

因此,我想利用 Google 驱动器 API 来枚举垃圾并确定它被丢弃的日期,以找到我想随后永久删除的文件集。

据我所知,有一个文件 属性 指示它是否已被删除,但不指示日期。

我试着搜索这个答案,但如果可能的话,要找到它并不容易。有谁熟悉API这方面的吗?

是否有比我正在尝试的更好的策略?

直接使用 https://developers.google.com/drive/v3/reference/changes/list,您可以检索最近的 file/folder 更改。这似乎列出了文件夹移动以及已删除文件的更改。

获取数据:

  1. 从 - https://developers.google.com/drive/v3/reference/changes/getStartPageToken
  2. 获取页面令牌
  3. 将该标记放入 - https://developers.google.com/drive/v3/reference/changes/list,页面大小为 500,includeRemoved 为真,select 使用字段编辑器 link 按钮的所有字段。
  4. 您将看不到任何结果,因为您使用的是最新的页面标记。您需要手动减少页面令牌,直到返回的 changes.time 早于所需的日期范围。 (查询中没有过滤器)。建立正确的页面令牌后,继续执行以下步骤。
  5. 在执行之前,打开开发者工具(我使用的是 Chrome)并查看网络部分
  6. 寻找以"changes?pageToken=..."和select开头的传输名称,将响应复制到Notepad++
  7. 注意nextPageToken字段,更新请求的页面token,重复第5步,直到nextPageToken不再前进。

我使用 http://www.jsonquerytool.com/ 从 notepad++ 粘贴数据并查询并找到相关的文件 ID。

查询 ID 数据(对于返回的每个结果):

  1. 将 JSON 粘贴到 JSON 部分
  2. Select JSPath 查询类型
  3. 使用此查询 double-check 文档名称“.changes{.file.trashed === true}.file.name”
  4. 使用此查询获取 ID 列表以保持“.changes{.file.trashed === true}.file.id”
  5. 将结果复制到记事本++

永久删除

如果您有少量文件 ID (< 100),您可能希望在每次手动迭代时通过 https://developers.google.com/drive/v3/reference/files/delete, and optionally check them with https://developers.google.com/drive/v3/reference/files/get 手动 运行 它们。

自动化

显然,如果您要处理更多数据,那么编写脚本或应用程序来完成上述任务是有意义的。但至少你可以看到这是可能的。

根据 Todd 的详细回答,我编写了一个 Python 脚本来实现此目的。它发布于 GitHub (cfbao/google-drive-trash-cleaner)。

例如要查看过去 30 天内丢弃的项目,运行
python cleaner.py -v -d 30

cleaner.exe -v -d 30 在 Windows


编辑:

糟糕!大错!
clean -v -d 30 显示超过 超过 30 天前被删除的文件。

如果您想查看在过去 30 天内被删除的文件,运行 clean -v -d 0 并查看所有按删除日期排序的已删除文件。

或者您可以修改我的脚本,使 -d 30 表示“过去 30 天”。修改应该不会太大。