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 も構成しています。冗長性を避けるため、DriveActivity 全体と同じ場合、Action は自身の Target フィールド、Actor フィールド、時間フィールドを入力しません。

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

回答例

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

単純な DriveActivity リソースには、1 つのファイルの編集など、1 つのアクションのみが含まれる場合があります。

"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 には、DriveActivity 全体と同じであるため、ActorTargetTimeStamp は含まれません。

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

統合が有効になっている場合、関連するアクションは 1 つの DriveActivity にグループ化されます。この例では、2 つの異なるユーザーによる 1 つの Edit アクション タイプ(2 つの類似したアクションがグループ化されています)がグループ化されています。

"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: 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: 2 番目のドライブのアイテムの ID。
  • TITLE_1: ドライブの最初のアイテムのタイトル。
  • TITLE_2: ドライブの 2 番目のアイテムのタイトル。

このレスポンスのアクションには、DriveActivity 全体と同じであるため、ActorTimeStamp は含まれません。