このガイドでは、Google Drive Activity API のレスポンスの主なコンポーネントについて説明します。また、サンプルとその解釈方法も示します。
オブジェクト
DriveActivity
- Drive Activity API へのクエリによって返されるメインのリソースです。1 つ以上のターゲットに影響する 1 つ以上のアクションを実行する 1 つ以上のアクターを記述します。Timestamp
とTimeRange
- それぞれ、アクティビティが発生した単一の時点、または一定期間にわたってアクティビティが発生した開始時間と終了時間を表します。Actor
- 通常、Actor
はエンドユーザーです。ただし、管理者がユーザーまたは自分自身として操作している場合や、身元不明のユーザーによって操作されている場合、システム イベントによってAction
がトリガーされることがあります。Actor
メッセージは、これらのケースをそれぞれカプセル化します。Target
-Target
は、ファイル、フォルダ、共有ドライブ、ファイル コメントなどのアクティビティのオブジェクトです。多くのアクション タイプは、複数の種類のターゲットをサポートしています。たとえば、Edit
は通常ドライブ ファイルに適用されますが、Rename
やCreate
などの他のアクションは、ドライブ フォルダや共有ドライブにも適用できます。ドライブのアイテムではないターゲットでも、ドライブのルートフォルダやファイルコメントを含む親ドキュメントなど、ドライブのアイテムを参照できます。Action
- 各DriveActivity
リソースには、1 つ以上の関連アクションがあります。Action
は、アクションの詳細なタイプと情報だけでなく、Actor
、Target
、Timestamp
またはTimeRange
も含むため、イベントのように自己完結型です。冗長性を回避するため、Action
は、DriveActivity
全体と同じである場合、独自の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
には、Actor
、Target
、TimeStamp
が含まれていません。これらは全体的な DriveActivity
と同じであるためです。
2 人のユーザーが同じファイルをほぼ同時に編集した:
統合がオンになっている場合、関連するアクションは 1 つの DriveActivity
にグループ化されます。この例では、2 つの類似アクションがグループ化されています。2 人の異なるユーザーによる 1 つの 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: 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 番目のドライブ アイテムのタイトル。
このレスポンスのアクションには Actor
や TimeStamp
が含まれていませんが、これは全体的な DriveActivity
と同じであるためです。