如何使用Google Drive API检索最近的已删除文件列表

时间:2016-01-15 02:11:47

标签: google-drive-api

我最近删除了Google云端硬盘中的大量文件,并将它们移到了垃圾箱。我想永久删除它们,但垃圾箱中的文件不能按删除日期排序,而只能按修改日期排序(删除后不会更新)。

因此,我想利用Google Drive API枚举垃圾箱并确定其被删除的日期,以查找我希望随后永久删除的文件集。

从我可以收集的内容中,有一个文件属性,指示它是否已被删除,但不是日期。

我试着寻找这个答案,但如果有可能的话,这并不容易找到。是否有人熟悉API的这个领域?

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

2 个答案:

答案 0 :(得分:4)

使用Todd的详细答案,我编写了一个Python脚本来实现这一目标。它发布在GitHub上(cfbao/google-drive-trash-cleaner)。

E.g。要查看过去30天内已删除的项目,请运行
python cleaner.py -v -d 30

Windows上的cleaner.exe -v -d 30

编辑:

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

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

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

答案 1 :(得分:0)

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

获取数据:

  1. 从 - https://developers.google.com/drive/v3/reference/changes/getStartPageToken
  2. 获取网页令牌
  3. 将该标记放入 - https://developers.google.com/drive/v3/reference/changes/list,页面大小为500,includeRemoved为true,并使用字段编辑器链接按钮选择所有字段。
  4. 您将看不到任何结果,因为您使用的是最新的页面令牌。您需要手动缩小页面令牌,直到返回的changes.time在所需的日期范围之前。 (查询中没有此过滤器)。建立正确的页面令牌后,请继续执行以下步骤。
  5. 执行前,打开开发者工具(我使用的是Chrome)并查看网络部分
  6. 寻找一个转移名称,盯着"更改?pageToken = ...",然后选择它,将响应复制到Notepad ++
  7. 注意nextPageToken字段,并更新请求的页面标记,重复步骤5,直到nextPageToken不再前进。
  8. 我使用http://www.jsonquerytool.com/粘贴来自notepad ++的数据,并查询并找到相关的文件ID。

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

    1. 将JSON粘贴到JSON部分
    2. 选择JSPath查询类型
    3. 使用此查询仔细检查文档名称" .changes {.file.trashed === true} .file.name"
    4. 使用此查询获取ID列表以保持" .changes {.file.trashed === true} .file.id"
    5. 将结果复制到Notepad ++
    6. 永久删除

      如果您有少量的FileID(< 100),您可能希望通过https://developers.google.com/drive/v3/reference/files/delete手动运行它们,并可选择在每次手动迭代时使用https://developers.google.com/drive/v3/reference/files/get进行检查。

      <强>自动化

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