このガイドでは、activity.query
メソッドを使用して Google Drive Activity API でリクエストを行う方法について説明します。
クエリキー
アクティビティをリクエストする方法は 2 つあります。Google ドライブのアイテムごと、またはフォルダ階層内のすべてに対してリクエストできます。
itemName
: このキーの形式は「items/ITEM_ID」です。通常、これはドライブ内のファイルです。このキーにフォルダを指定すると、フォルダの作成や名前変更などのアクティビティが表示されます。ancestorName
: このキーの形式は「items/ITEM_ID」です。レスポンスには、このフォルダの下のサブツリー内のすべてのアイテムのアクティビティが含まれます。
キーが設定されていない場合、デフォルトで「items/root」の ancestorName
が使用され、ドライブ内のすべてのアイテムのアクティビティが表示されます。
ページネーション
pageSize
フィールドを使用すると、各レスポンスで返されるアクティビティのおおよその数をリクエストできます。返されるアクティビティの実際の数は異なるため、アプリはレスポンスで任意の数を処理する必要があります。
ページサイズには制限があります。アプリで多くのアクティビティが必要な場合は、pageSize
に大きな値を設定するのではなく、ページネーションを使用して複数のリクエストを実行します。具体的には、レスポンスに含まれるアクティビティよりも取得するアクティビティが多い可能性がある場合、レスポンスには nextPageToken
も含まれます。追加の結果を取得するには、同じリクエストを繰り返す際に、前のレスポンスの nextPageToken
の値を含む pageToken
フィールドを追加します。
統合
Action
オブジェクトは、多くの場合、1 つの DriveActivity
リソース内でグループ化されて返されます。アイテムを共有フォルダに移動して権限変更をトリガーするなど、一部の Action
のグループ化は自然に発生します。
リクエストで ConsolidationStrategy
(集計またはバッチ処理)を指定することもできます。これにより、関連する Action
オブジェクトの他のグループ化が可能になります。たとえば、複数のアクタが 1 つのアイテムを編集する場合や、1 つの Actor
が複数のファイルを新しいドライブ フォルダに移動する場合などです。
個々の Action
には 1 つの Actor
と 1 つの Target
がありますが、グループ化すると、結果の DriveActivity
には複数のアクタと複数のターゲットを含めることができます。ただし、グループ化後も、リクエストされた統合戦略に応じて、DriveActivity
リソース内のすべてのアクションの代表または最も重要なアクションである「プライマリ」アクションが常に存在します。
そのため、統合が有効かどうかにかかわらず、多くのクライアントでは、DriveActivity
リソースの最上位のコンテンツ(primaryActionDetail
内の集合的なアクタやターゲットなど)のみを表示し、レスポンスの詳細なアクションを無視すれば十分な場合があります。
フィルタ
activity.query
リクエストで filter
文字列を作成すると、DriveActivity
リソースで返されるアクションを制限できます。サポートされているフィールドは time
と detail.action_detail_case
の 2 つです。
時間でフィルタする
期間でアクションを制限するには、日付値の数値演算子を使用してフィールド名 time
を指定し、必要に応じて「AND」で結合します。1970 年 1 月 1 日からのミリ秒数または RFC 3339 形式を使用します。次に例を示します。
time > 1452409200000 AND time <= 1492812924310
time >= "2016-01-10T01:02:03-05:00"
タイプでフィルタ
アクション タイプで制限するには、フィールド名 detail.action_detail_case
に「has」演算子(:
)を適用します。単一の値を使用するか、許可されるアクション タイプのリストを括弧で囲み、スペースで区切って使用します。アクション タイプのリストを確認するには、ActionDetail
オブジェクトをご覧ください。
アクション タイプをレスポンスから除外するには、フィルタ文字列の前にハイフン(-
)を追加します。
アクション タイプの例を次に示します。
detail.action_detail_case:RENAME
detail.action_detail_case:(CREATE RESTORE)
-detail.action_detail_case:MOVE
組み合わせ
これらのフィルタ条件は、次のように 1 つの filter
文字列内で組み合わせることができます。
detail.action_detail_case:(CREATE EDIT RESTORE) time > 1452409200000
リクエストの例
ドライブのアイテムの最近のアクティビティ 10 件をリクエストします。
{
"itemName": "items/ITEM_ID",
"pageSize": 10
}
祖先フォルダの下のすべてのドライブ アイテムの統合アクティビティをリクエストします。
{
"ancestorName": "items/ITEM_ID",
"consolidationStrategy": {
"legacy": {}
}
}
ドライブのアイテムに対するすべての MOVE
アクションと RENAME
アクションをリクエストします。
{
"itemName": "items/ITEM_ID",
"filter": "detail.action_detail_case:(MOVE RENAME)"
}
2018 年 1 月 1 日(EST)以降のすべてのアクティビティをリクエストします。
{
"ancestorName": "items/root",
"filter": "time >= \"2018-01-01T00:00:00-05:00\""
}
2017 年 6 月(UTC)の EDIT
アクションを除くすべてのアクティビティをリクエストします。
{
"ancestorName": "items/root",
"filter": "time >= \"2018-06-01T00:00:00Z\" time < \"2018-07-01T00:00:00Z\" -detail.action_detail_case:EDIT"
}