【问题标题】:Google Drive - Changes:list API - Detect changes at folder levelGoogle Drive - Changes:list API - 检测文件夹级别的更改
【发布时间】:2012-10-29 20:46:25
【问题描述】:

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

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

APIs 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. 使用递归数组搜索遍历子树结构(链接 parent:id 和文件 Id)并获取最大 modifiedDate 和总文件数。
  4. 在应用存储中存储最大修改日期和文件数。
  5. 对于后续调用,将新的最大修改日期与存储的日期进行比较,并将文件总数与存储的时间进行比较。如果任一不匹配,则“MyRootFolder”中的内容已更新。

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

    目前无法直接使用 API 实现这一点——抱歉!

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

    【讨论】:

    • 您提供的解决方案不适用于已删除的对象:除了更改提要中永久删除对象的 ID 之外,我们没有任何信息
    • 使用 'Changes:list' API 完整响应可能无法满足我的要求。原因,我必须启用“includeDeleted”标志,因为我还需要检测文件夹中的文件删除。但这没有用,因为响应中那些已删除的项目没有父 ID。因此,在删除之前,我无法确定它们存在于哪个文件夹中——我对文件夹级别范围之外的已删除文件不感兴趣。我已经用解决方案更新了我的帖子。
    • 是的,你是对的,但这是用户功能。为什么您的应用程序应该知道有关已删除数据的任何信息?用户已将其删除。该 ID 用于清理您的系统。作为开发人员,这对我来说并不完美,但我认为基于用户的意图在这里是正确的。
    • API 调用费用。我正在缓存文件夹和文件的 ID。它不会每次都刷新整个内容,而是会运行缓存并进行一次性后台调用以验证是否有任何内容发生更改。如果预期的“MyRootFolder”中的内容发生变化,它将清除缓存。
    • 仔细想想,我同意这是一个用户功能。 files:list 符合我的目的,但我必须列出所有(时间密集型)。仅供参考,如果所有者只是从 Drive UI 中查看文件夹内容,则此活动正在注册为 Changes:list api 中的更改。无论如何,我没想到会触发这种变化。可能是更改 API 可以执行基于上下文的更改检测,将输入作为,(1)对于任何目录内容中的内容更改(如果存在,这将对我有帮助)(2)对于文件最后访问的更改 - ....再次感谢您的回复!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多