このドキュメントでは、Google アナリティクス Data API v1 の高度な機能について説明します。API の詳細なリファレンスについては、API リファレンスをご覧ください。
カスタム定義を一覧表示してレポートを作成する
Data API では、登録済みのカスタム ディメンションとカスタム指標に関するレポートを作成できます。Metadata API メソッドを使用すると、プロパティに登録されているカスタム定義の API 名を一覧表示できます。これらの API 名は、たとえば runReport メソッドのレポート リクエストで使用できます。
以降のセクションでは、カスタム定義のタイプ別に例を示します。これらの例では、GA_PROPERTY_ID をプロパティ ID に置き換えます。
イベント スコープのカスタム ディメンション
ステップ 1: プロパティ ID を使用して Metadata API メソッドをクエリします。
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
ステップ 2: レスポンスから、レポートの作成対象となるイベント スコープのカスタム ディメンションを見つけます。ディメンションが存在しない場合は、ディメンションを登録する必要があります。
"dimensions": [
...
{
"apiName": "customEvent:achievement_id",
"uiName": "Achievement ID",
"description": "An event scoped custom dimension for your Analytics property."
},
...
],
ステップ 3: レポート リクエストにカスタム ディメンションを含めます。以下は、runReport メソッドに対するリクエストの例です。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "2020-09-01", "endDate": "2020-09-15" }],
"dimensions": [{ "name": "customEvent:achievement_id" }],
"metrics": [{ "name": "eventCount" }]
}
ユーザー スコープのカスタム ディメンション
ステップ 1: プロパティ ID を使用して Metadata API メソッドをクエリします。
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
ステップ 2: レスポンスから、レポートの作成対象となるユーザー スコープのカスタム ディメンションを見つけます。ディメンションが存在しない場合は、ディメンションを登録する必要があります。
"dimensions": [
...
{
"apiName": "customUser:last_level",
"uiName": "Last level",
"description": "A user property for your Analytics property."
},
...
],
ステップ 3: レポート リクエストにカスタム ディメンションを含めます。以下は、runReport メソッドに対するリクエストの例です。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"entity": { "propertyId": "GA_PROPERTY_ID" },
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "customUser:last_level" }],
"metrics": [{ "name": "activeUsers" }]
}
イベント スコープのカスタム指標
ステップ 1: プロパティ ID を使用して Metadata API メソッドをクエリします。
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
ステップ 2: レスポンスから、レポートの作成対象となるイベント スコープのカスタム指標を見つけます。指標が存在しない場合は、指標を登録する必要があります。
"metrics": [
...
{
"apiName": "customEvent:credits_spent",
"uiName": "Credits Spent",
"description": "An event scoped custom metric for your Analytics property.",
"type": "TYPE_STANDARD"
},
...
],
ステップ 3: レポート リクエストにカスタム指標を含めます。以下は、runReport メソッドに対するリクエストの例です。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "30daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "eventName" }],
"metrics": [{ "name": "customEvent:credits_spent" }]
}
1 つのキーイベントのキーイベント率指標
ステップ 1: プロパティ ID を使用して Metadata API メソッドに対してクエリを実行します。
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
ステップ 2: レスポンスから、レポートの作成対象となる 1 つのキーイベントのキーイベント率指標を見つけます。キーイベントが表示されない場合は、キーイベントを設定する必要があります。
"metrics": [
...
{
"apiName": "sessionKeyEventRate:add_to_cart",
"uiName": "Session key event rate for add_to_cart",
"description": "The percentage of sessions in which a specific key event was triggered",
},
...
],
ステップ 3: レポート リクエストにキーイベント率の指標を含めます。以下は、runReport メソッドに対するリクエストの例です。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "30daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "eventName" }],
"metrics": [{ "name": "sessionKeyEventRate:add_to_cart" }]
}
イベント スコープのカスタム指標の平均値
ステップ 1: プロパティ ID を使用して Metadata API メソッドをクエリします。
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
ステップ 2: レスポンスから、レポートの作成対象となるイベント スコープのカスタム指標の平均値を見つけます。指標が存在しない場合は、指標を登録する必要があります。
"metrics": [
...
{
"apiName": "averageCustomEvent:credits_spent",
"uiName": "Average Credits Spent",
"description": "The average of an event scoped custom metric for your Analytics property.",
"type": "TYPE_STANDARD"
},
...
],
ステップ 3: レポート リクエストにカスタム指標の平均を含めます。以下は、runReport メソッドに対するリクエストの例です。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "2020-11-01", "endDate": "2020-11-10" }],
"dimensions": [{ "name": "eventName" }],
"metrics": [{ "name": "averageCustomEvent:credits_spent" }]
}
コホート レポートの例
コホート レポートでは、コホートのユーザー維持率の時系列データが作成されます。各 API フィールドの詳細なドキュメントについては、CohortSpec の REST リファレンスをご覧ください。
コホート レポートを作成する
以下は、次のようなコホート レポートの例です。
- コホートは
firstSessionDateが2020-12-01のユーザーです。これはcohortsオブジェクトによって構成されます。レポート レスポンスのディメンションと指標は、コホートのユーザーのみに基づきます。 - コホート レポートには 3 つの列が表示されます。これは、ディメンション オブジェクトと指標オブジェクトによって構成されます。
- ディメンション
cohortは、コホートの名前です。 - ディメンション
cohortNthDayは、2020-12-01からの日数です。 - 指標
cohortActiveUsersは、アクティブなユーザーの数です。
- ディメンション
cohortsRangeオブジェクトは、このコホートの2020-12-01から2020-12-06までのイベントデータがレポートに含まれるように指定します。- 粒度
DAILYを使用する場合は、一貫性を保つためにディメンションcohortNthDayを使用することをおすすめします。
- 粒度
コホートのレポート リクエストは次のとおりです。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dimensions": [{ "name": "cohort" }, { "name": "cohortNthDay" }],
"metrics": [{ "name": "cohortActiveUsers" }],
"cohortSpec": {
"cohorts": [
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-12-01", "endDate": "2020-12-01" }
}
],
"cohortsRange": {
"endOffset": 5,
"granularity": "DAILY"
}
},
}
このリクエストに対するレポート レスポンスの例は次のとおりです。
{
"dimensionHeaders": [
{ "name": "cohort" }, { "name": "cohortNthDay" }
],
"metricHeaders": [
{ "name": "cohortActiveUsers", "type": "TYPE_INTEGER" }
],
"rows": [
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0000" }],
"metricValues": [{ "value": "293" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0001" }],
"metricValues": [{ "value": "143" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0002" }],
"metricValues": [{ "value": "123" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0003" }],
"metricValues": [{ "value": "92" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0005" }],
"metricValues": [{ "value": "86" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0004" }],
"metricValues": [{ "value": "83" }]
}
],
"metadata": {},
"rowCount": 6
}
このレポートのレスポンスから、このコホート レポートのグラフが続きます。このレポートから、このコホートのアクティブ ユーザー数が最も減少したのは 1 日目と 2 日目の間であることがわかります。

複数のコホートとユーザー維持率
ユーザーの獲得と維持は、ウェブサイトやアプリを成長させるための方法です。コホート レポートは、ユーザーの維持に焦点を当てています。この例では、このプロパティの 4 日間のユーザー維持率が 2 週間で 10% 向上したことがレポートに示されています。
このレポートを作成するには、3 つのコホートを指定します。1 つ目は firstSessionDate が 2020-11-02、2 つ目は firstSessionDate が 2020-11-09、3 つ目は firstSessionDate が 2020-11-16 です。この 3 日間のプロパティのユーザー数は異なるため、cohortActiveUsers 指標を直接使用するのではなく、cohortActiveUsers/cohortTotalUsers のコホートのユーザー維持率の割合指標を比較します。
これらのコホートのレポート リクエストは次のとおりです。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dimensions": [{ "name": "cohort" },{ "name": "cohortNthDay" }],
"metrics": [
{
"name": "cohortRetentionFraction",
"expression": "cohortActiveUsers/cohortTotalUsers"
}
],
"cohortSpec": {
"cohorts": [
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-11-02", "endDate": "2020-11-02" }
},
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-11-09", "endDate": "2020-11-09" }
},
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-11-16", "endDate": "2020-11-16" }
}
],
"cohortsRange": {
"endOffset": 4,
"granularity": "DAILY"
}
},
}
このリクエストに対するレポート レスポンスの例は次のとおりです。
{
"dimensionHeaders": [{ "name": "cohort" },{ "name": "cohortNthDay" }],
"metricHeaders": [{
"name": "cohortRetentionFraction",
"type": "TYPE_FLOAT"
}
],
"rows": [
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0000" }],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0000" }],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0000" }],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0001" }],
"metricValues": [{ "value": "0.308" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0001" }],
"metricValues": [{ "value": "0.272" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0002" }],
"metricValues": [{ "value": "0.257" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0001" }],
"metricValues": [{ "value": "0.248" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0003" }],
"metricValues": [{ "value": "0.235" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0004" }],
"metricValues": [{ "value": "0.211" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0002" }],
"metricValues": [{ "value": "0.198" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0002" }],
"metricValues": [{ "value": "0.172" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0003" }],
"metricValues": [{ "value": "0.167" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0004" }],
"metricValues": [{ "value": "0.155" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0003" }],
"metricValues": [{ "value": "0.141" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0004" }],
"metricValues": [{ "value": "0.118" }]
}
],
"metadata": {},
"rowCount": 15
}
このレポートのレスポンスから、このコホート レポートのグラフが続きます。このレポートから、2 週間で 4 日間のユーザー維持率が 10% 増加したことがわかります。firstSessionDate が 2020-11-16 の後のコホートの保持率が、firstSessionDate が 2020-11-02 の前のコホートの保持率を上回っています。

週次コホートと他の API 機能でのコホートの使用
ユーザー行動の日々のばらつきを解消するには、週次コホートを使用します。週単位のコホート レポートでは、同じ週に firstSessionDate を行ったすべてのユーザーがコホートを形成します。週は日曜日から始まり、土曜日に終わります。このレポートでは、コホートをスライスして、ロシアでアクティビティを行ったユーザーとメキシコでアクティビティを行ったユーザーを比較しています。このスライスでは、country ディメンションと dimensionFilter を使用して、2 つの国のみを考慮します。
これらのコホートのレポート リクエストは次のとおりです。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dimensions": [
{ "name": "cohort" },
{ "name": "cohortNthWeek" },
{ "name": "country" }
],
"metrics": [{ "name": "cohortActiveUsers" }],
"dimensionFilter": {
"filter": {
"fieldName": "country",
"inListFilter": {
"values": [ "Russia", "Mexico" ]
}
}
},
"cohortSpec": {
"cohorts": [
{
"dimension": "firstSessionDate",
"dateRange": {
"startDate": "2020-10-04",
"endDate": "2020-10-10"
}
}
],
"cohortsRange": {
"endOffset": 5,
"granularity": "WEEKLY"
}
},
}
このリクエストに対するレポート レスポンスの例は次のとおりです。
{
"dimensionHeaders": [
{ "name": "cohort" },
{ "name": "cohortNthWeek" },
{ "name": "country" }
],
"metricHeaders": [
{ "name": "cohortActiveUsers", "type": "TYPE_INTEGER" }
],
"rows": [
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0000" },{ "value": "Russia" }
],
"metricValues": [{ "value": "105" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0000" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "98" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0001" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "35" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0002" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "24" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0001" },{ "value": "Russia" }
],
"metricValues": [{ "value": "23" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0004" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "17" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0003" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "15" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0005" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "15" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0002" },{ "value": "Russia" }
],
"metricValues": [{ "value": "3" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0003" },{ "value": "Russia" }
],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0004" },{ "value": "Russia" }
],
"metricValues": [{ "value": "1" }]
}
],
"metadata": {},
"rowCount": 11
}
このレポート レスポンスの後に、このコホート レポートのグラフが続きます。このレポートによると、このプロパティは、ロシアでのアクティビティがあるユーザーよりも、メキシコでのアクティビティがあるユーザーの維持率が高いことがわかります。

比較
比較を使用すると、データのサブセットを並べて評価できます。レポート定義で comparisons フィールドを指定することで、比較を定義できます。Data API の比較機能は、Google アナリティクスのフロントエンドの比較機能と似ています。
各 API フィールドの詳細なドキュメントについては、比較の REST リファレンスをご覧ください。
比較を作成する
比較するデータセットごとに個別の比較を作成できます。たとえば、アプリのデータとウェブのデータを比較するには、Android と iOS のデータ用の比較と、ウェブデータ用の比較を個別に作成することが可能です。
次に、2 つの比較を定義し、国別にアクティブ ユーザー数を返すレポートの例を示します。
「アプリ トラフィック」という名前の最初の比較では、inListFilter を使用して platform ディメンションを値「iOS」と「Android」に一致させています。「ウェブ トラフィック」という名前の 2 つ目の比較では、stringFilter を使用して platform ディメンションを「ウェブ」と照合します。
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"comparisons": [
{
"name": "App traffic",
"dimensionFilter": {
"filter": {
"fieldName": "platform",
"inListFilter": {
"values": [
"iOS",
"Android"
]
}
}
}
},
{
"name": "Web traffic",
"dimensionFilter": {
"filter": {
"fieldName": "platform",
"stringFilter": {
"matchType": "EXACT",
"value": "web"
}
}
}
}
],
"dateRanges": [
{
"startDate": "2024-05-01",
"endDate": "2024-05-15"
}
],
"dimensions": [
{
"name": "country"
}
],
"metrics": [
{
"name": "activeUsers"
}
]
}
比較機能を使用するすべてのリクエストについて、生成されたレポートに comparison フィールドが自動的に追加されます。このフィールドには、リクエストで指定された比較の名前が含まれます。
比較を含むレスポンスのサンプル スニペットを次に示します。
{
"dimensionHeaders": [
{
"name": "comparison"
},
{
"name": "country"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "Web traffic"
},
{
"value": "United States"
}
],
"metricValues": [
{
"value": "638572"
}
]
},
{
"dimensionValues": [
{
"value": "Web traffic"
},
{
"value": "Japan"
}
],
"metricValues": [
{
"value": "376578"
}
]
},
{
"dimensionValues": [
{
"value": "App traffic"
},
{
"value": "United States"
}
],
"metricValues": [
{
"value": "79527"
}
]
},
...
],
...
}