Drive Activity API 資料模型

本指南將說明 Google Drive Activity API 的回應主要元件。 中的範例及如何解讀這些例子。

物件

  • DriveActivity:這是 Drive Activity API 的查詢傳回的主要資源。這項服務 描述一或多位演員正在執行一或多個影響一或多個動作

  • Timestamp敬上 和 TimeRange:這些 分別描述在活動期間 或活動的開始與結束,範圍為 讓應用程式從可以最快做出回應的位置 回應使用者要求

  • ActorActor 通常為 而非個別使用者的帳戶不過,系統事件有時可能會觸發 如果管理員的身分是 Action 或他人執行這類操作時。 Actor 訊息會封裝以下每個情況。

  • TargetTarget 是物件 活動,例如檔案、資料夾、共用雲端硬碟或檔案註解。 請注意,許多動作類型都支援多個目標類型。適用對象 舉例來說,Edit 通常適用於雲端硬碟檔案,其他 RenameCreate等動作也可以套用到雲端硬碟 資料夾和共用雲端硬碟。不屬於雲端硬碟項目的目標 仍可參照其中一個項目,例如雲端硬碟的根資料夾或父項資料夾 內含檔案註解的文件。

  • Action - 每 DriveActivity 資源有一或多個相關動作。Action 是獨立的 如同 事件,而不只是詳細的類型和資訊 與動作相關,但也需包含 ActorTargetTimestampTimeRange。為避免重複,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 不包含 ActorTarget, 或 TimeStamp,因為其與整體 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相同。