Google Drive Activity API でリクエストを行う

このガイドでは、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 リソースで返されるアクションを制限できます。サポートされているフィールドは timedetail.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"
}