8

我正在测试 Google Drive 'Changes' API 并有一些问题。

期望:我在“我的驱动器”下有文件夹树结构,其中包含文件。我想调用 Changes:list API 来检测是否在该特定文件夹 ID 中添加/编辑/删除了项目。

API Explorer 尝试过:https ://developers.google.com/drive/v2/reference/changes/list

问题:

  1. 我看不到任何将特定文件夹 ID 传递给此 API 以获取“最大更改 ID”的选项。看起来这个 api 不支持 parm 'q'?可能吗?

  2. 作为替代解决方案,考虑存储该文件夹的“modifiedDate”属性并在下次比较时使用它。但是,当该文件夹中的项目更新时,它不会更新。它不应该像在文件夹修改日期在其内容更新时更新的窗口中那样工作吗?

想知道是否可以在文件夹级别检测更改。

谢谢

[编辑]

有效的解决方案:

  1. 使用 Files:list 列出所有。选定的字段:items/id,items/modifiedDate,items/parents/id,items/title

  2. 获取起始文件夹 ID(例如,使用标题搜索获取“MyRootFolder”)

  3. 使用递归数组搜索遍历子树结构(链接父母:id 和文件 ID)并获取最大修改日期和文件总数。
  4. 在应用存储中存储最大修改日期和文件计数。
  5. 对于后续调用,将新的最大修改日期与存储的进行比较,并将文件总数与存储的进行比较。如果任一不匹配,则“MyRootFolder”中的内容已更新。
4

2 回答 2

2

目前无法直接使用 API 实现 - 抱歉!

我认为当前最好的解决方案是使用常规更改提要并将代码中的结果过滤为具有正确父项设置的结果。

于 2012-10-29T20:56:01.347 回答
2

drive.changes.list google drive API 现在允许用户传递“startChangeId”参数。

我使用从以前的 API 结果中获得的“largestChangeId”值,因此我可以逐步构建用户所做的更改,避免重建整个树的需要。

我很惊讶为什么他们不支持“includeDeleted”参数和“startChangeId”参数。

于 2014-07-08T07:07:34.697 回答