Drive Activity API 数据模型

本指南介绍了 Google Drive Activity API 中响应的主要组成部分, 示例,并说明如何解读这些示例。

对象

  • DriveActivity:这是 向 Drive Activity API 的查询返回的主要资源。它 描述一个或多个行为者执行一项或多项操作,该操作影响一个或 更多目标。

  • TimestampTimeRange - 这些 分别描述了用户在活动、 或活动发生时间跨度的开始和结束时间 。

  • Actor - 通常情况下,Actor 最终用户。不过,系统事件有时可能会触发 Action(如果管理员以 或由无法识别身份的人执行。通过 Actor 消息封装了这些情况。

  • Target - Target 是对象 例如文件、文件夹、共享云端硬盘或文件评论。 请注意,许多操作类型都支持多种目标。对于 但 Edit 通常适用于云端硬盘文件,而其他文件 RenameCreate等操作也可应用于云端硬盘 文件夹和共享云端硬盘。目标不是云端硬盘内容 但仍可引用文件夹,例如云端硬盘的根文件夹或父级文件夹 包含文件评论的文档。

  • Action - 每个DriveActivity 资源具有一项或多项相关操作。Action 是独立的, 比如 event,因为它不仅包含详细的类型和信息, 以及一个 Actor、一个 Target 以及一个 TimestampTimeRange。为避免冗余,Action 不会填充自己的 TargetActor 或时间字段(如果这些字段与总的 DriveActivity

  • ActionDetail - 这是 特定类型和有关 Action 的详细信息。例如, Move操作详情包含来源位置和目标位置,以及 PermissionChange 指定谁可以访问文档,以及使用什么 权限。

示例回复

用户编辑了云端硬盘中的文件:

简单的 DriveActivity 资源可能仅包含一项操作,例如 修改一个文件。

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } } ],
  "timestamp":{ "seconds":"1536794657", "nanos":791000000 },
  "actions":[ { "detail":{ "edit":{} } } ]
}]

此输出包括以下值:

  • ACCOUNT_ID:用户的 ID。它可以与 People API 以获取更多信息。
  • ITEM_ID:云端硬盘内容的 ID。
  • TITLE:云端硬盘内容的标题。

请注意,此响应中的 Action 不包含 ActorTargetTimeStamp,因为它们与整体 DriveActivity 相同。

有两位用户在相近的时间编辑了同一文件:

启用整合功能后,相关操作会归入一组 DriveActivity。在本例中,我们将 2 个相似的操作归为一组:一项 Edit 两个不同用户的操作类型。

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "time_range":{
    "start_time":{ "seconds":"1541089823", "nanos":712000000 },
    "end_time":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

此输出包括以下值:

  • ACCOUNT_ID_1:第一个用户的 ID。它可与 使用 People API 获取更多信息。
  • ACCOUNT_ID_2:第二个用户的 ID。
  • ITEM_ID:云端硬盘内容的 ID。
  • TITLE:云端硬盘内容的标题。

请注意,此响应中的操作不包含 Target,因为它 与总体 DriveActivity 相同。

该示例还说明了应用在 DriveActivity,而不查看各项操作。响应 表示在一段时间内有 2 位用户修改了给定文件。

某位用户将 2 个文件移到了新目录:

在此示例中,整合策略将 2 项相关的 Move 操作组合在一起 因为这些文件是从 。

"activities":[{
  "primary_action_detail":{
    "move":{
      "added_parents":[ { ... } ]
      "removed_parents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
    }
  ]
}]

此输出包括以下值:

  • ACCOUNT_ID:用户的 ID。它可以与 People API 以获取更多信息。
  • ITEM_ID_1:第一个云端硬盘内容的 ID。
  • ITEM_ID_2:第二个云端硬盘内容的 ID。
  • TITLE_1:第一个云端硬盘内容的标题。
  • TITLE_2:第二个云端硬盘内容的标题。

请注意,此响应中的操作不包含 ActorTimeStamp 因为它们与总体 DriveActivity 相同。