Drive Activity API データモデル

このガイドでは、Google Drive Activity API のレスポンスの主なコンポーネントについて説明します。また、サンプルとその解釈方法も示します。

オブジェクト

  • DriveActivity: これは、Drive Activity API へのクエリによって返されるプライマリ リソースです。1 つ以上のターゲットに影響する 1 つ以上のアクションを実行する 1 つ以上のアクターを記述します。

  • TimestampTimeRange: それぞれ、アクティビティが発生した単一の時点、または一定期間にわたってアクティビティが発生した開始時と終了時を記述します。

  • Actor: 通常、Actor はエンドユーザーです。ただし、管理者がユーザーまたは自身として操作している場合や、身元不明のユーザーによって操作されている場合、システム イベントによって Action がトリガーされることがあります。Actor メッセージは、これらのケースをそれぞれカプセル化します。

  • Target: Target は、ファイル、フォルダ、共有ドライブ、ファイル コメントなどのアクティビティのオブジェクトです。多くのアクション タイプは、複数の種類のターゲットをサポートしています。たとえば、Edit は通常ドライブ ファイルに適用されますが、RenameCreate などの他のアクションは、ドライブのフォルダや共有ドライブにも適用できます。ドライブのアイテムではないターゲットでも、ドライブのルートフォルダやファイルコメントを含む親ドキュメントなど、ドライブのアイテムを参照できます。

  • Action: 各 DriveActivity リソースには、1 つ以上の関連アクションがあります。Action は、アクションの詳細なタイプと情報だけでなく、ActorTargetTimestamp または TimeRange も含む点で、イベントのように自己完結型です。冗長性を回避するため、Action は、全体的な DriveActivity と同じである場合、独自の TargetActor、時間フィールドに入力しません。

  • ActionDetail: Action の特定のタイプと詳細情報です。たとえば、Move アクションの詳細には送信元と送信先の場所があり、PermissionChange にはドキュメントにアクセスできるユーザーとその権限を指定します。

返信の例

以下に、レスポンスの例を示します。

ユーザーがドライブでファイルを編集しました

DriveActivity リソースには、ユーザーが 1 つのファイルを編集するなど、1 つのアクションのみを含めることができます。

"activities":[{
  "primaryActionDetail":{ "edit":{} },
  "actors":[ { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "driveItem":{ "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 全体と同じであるためです。

2 人のユーザーが同じファイルをほぼ同時に編集した

ConsolidationStrategy を使用すると、関連するアクションが 1 つの結合 DriveActivity にグループ化されます。この例では、2 つの類似したアクションがグループ化されています。2 人の異なるユーザーによる 1 つの Edit アクション タイプです。

"activities":[{
  "primaryActionDetail":{ "edit":{} },
  "actors":[
    { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_1" } } },
    { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "driveItem":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "timeRange":{
    "startTime":{ "seconds":"1541089823", "nanos":712000000 },
    "endTime":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

この出力には次の値が含まれます。

  • ACCOUNT_ID_1: 最初のユーザーの ID。People API と組み合わせて使用すると、詳細情報を取得できます。
  • ACCOUNT_ID_2: 2 番目のユーザーの ID。
  • ITEM_ID: ドライブ アイテムの ID。
  • TITLE: ドライブ アイテムのタイトル。

このレスポンスの Action オブジェクトには Target が含まれていません。これは、DriveActivity 全体と同じであるためです。

この例は、アプリが個々のアクションを調べることなく、DriveActivity の概要情報のみを使用する方法も示しています。レスポンスは、2 人のユーザーが特定のファイルを一定期間にわたって編集したことを示しています。

ユーザーが 2 つのファイルを新しいディレクトリに移動した

この例では、ファイルが同じソースから同じ宛先に同時に移動されたため、ConsolidationStrategy は 2 つの関連する Move アクションをグループ化しました。

"activities":[{
  "primaryActionDetail":{
    "move":{
      "addedParents":[ { ... } ]
      "removedParents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "driveItem":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "driveItem":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "addedParents":[ { ... } ] "removedParents":[ { ... } ] } },
      "target":{ "driveItem":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "addedParents":[ { ... } ] "removedParents":[ { ... } ] } },
      "target":{ "driveItem":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
    }
  ]
}]

この出力には次の値が含まれます。

  • ACCOUNT_ID: ユーザーの ID。 People API と組み合わせて使用すると、詳細情報を取得できます。
  • ITEM_ID_1: 最初のドライブ アイテムの ID。
  • ITEM_ID_2: 2 番目のドライブ アイテムの ID。
  • TITLE_1: 最初のドライブ アイテムのタイトル。
  • TITLE_2: 2 番目のドライブ アイテムのタイトル。

このレスポンスの Action オブジェクトには、Actortimestamp が含まれていません。これは、Actortimestamp が全体的な DriveActivity と同じであるためです。