概要

Google アナリティクス Admin API v1 では、 runAccessReport メソッドを呼び出します。このレポートには、ユーザーが Google アナリティクスを読むたびに記録される レポートデータですアクセス記録は最長で 2 年間保存されます。データアクセス 管理者のロールを持つユーザーのみが使用できます。

データアクセス レポートを作成する

データアクセス レポートは、 runAccessReport メソッド。

コアレポートと共有機能

データアクセス レポート リクエストのセマンティクスは、コアレポートと同じです。 リクエストにより、多くの共有機能が使用できます。たとえば ページ分けディメンション フィルタ期間の指定の動作は同じ コアレポートとして作成されます。

Google Workspace のコアレポート機能の概要を Data API v1 を使用します。 このドキュメントでは、データアクセス レポート リクエストに固有の機能に焦点を当てます。

報告エンティティの選択

主要レポートと同様 機能 Data API v1、runAccessReport メソッドを使用するには、Google Analytics API v1 の プロパティ ID は、 properties/GA_PROPERTY_ID 形式の URL リクエストパス。例:

  POST  https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport

データアクセス レポートは、Google アナリティクスに基づいて生成されます。 指定した Google アナリティクス プロパティのデータアクセス レコード。

Admin API クライアント ライブラリのいずれかを使用している場合は、 リクエスト URL パスを手動で操作する必要はありません。ほとんどの API クライアントでは、文字列が properties/GA_PROPERTY_ID の形式の property パラメータが提供されています。コード スニペットについては、 クライアント ライブラリの使用例をご確認ください。

ディメンションと指標

サイズ プロパティのアクセスデータの記述とグループ化を行えます。たとえば userEmail は、レポートデータにアクセスしたユーザーのメールアドレスを示します。 レポート レスポンスのディメンション値は文字列です。

指標 レポートの定量的測定値を表しますaccessCount 指標 データアクセス レコードの合計数を返します。

ディメンションおよびデータの完全なリストについては、データアクセス スキーマをご覧ください。 データ アクセス レポート リクエストで使用できる指標名です。

データアクセス レポート リクエスト

データアクセス レポートをリクエストするには、RunAccessReportRequest オブジェクトを作成します。水 次のリクエスト パラメータから始めることをおすすめします。

  • この日付に少なくとも 1 つの有効なエントリが指定されています 範囲 表示されます。
  • 少なくとも 1 つの有効なエントリが ディメンション 表示されます。
  • epochTimeMicros ディメンションを使用しない場合は、少なくとも 1 つの有効なエントリを 指標 フィールドを使って、ディメンション値の組み合わせごとに定量的データを取得します。 できます。

推奨フィールドを含むリクエストの例を以下に示します。このクエリを実行すると、 ユーザーのメールアドレスのリスト、ユーザーが指定したプロパティに最後にアクセスした日時 およびそれに対応するアクセス回数。

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

回答を報告

コンセプトは「主なレポート」と類似 Data API v1 の機能 データアクセス レポート レスポンス アクセス レポート リクエストは主にヘッダーと行です。ヘッダーは AccessDimensionHeaders および AccessMetricHeaders レポート内の列の一覧が表示されます。

アクセス レポート row は以下で構成されます AccessDimensionValues および AccessMetricValues 同じ値を使用します列の順序は、 すべての行を返します。

上記のサンプル リクエストに対するレスポンスの例を次に示します。

{
  "dimensionHeaders": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricHeaders": [
    {
      "metricName": "accessCount"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "1667591408427733"
        },
        {
          "value": "Bola@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "1238"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667710959827161"
        },
        {
          "value": "Alex@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "475"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667868650762743"
        },
        {
          "value": "Mahan@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "96"
        }
      ]
    }
  ],
  "rowCount": 3
}

アクセス レコードのフィルタリング

こちらの dimensionFilter フィールド RunAccessReportRequest レポート レスポンスを、指定した条件と一致する特定のディメンション値に フィルタで絞り込んでから、

次の例では、個々のデータアクセスに基づいてレポートを生成します 1 人のユーザーのアクセス レコードでフィルタできます。 Alex@example.net。このレポートには、各アクセス レコードの日時、ユーザーの 関連付けられています

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "epochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    },
    {
      "dimensionName": "userIP"
    }
  ],
  "dimensionFilter": {
    "accessFilter": {
      "fieldName": "userEmail",
      "stringFilter": {
        "matchType": "EXACT",
        "value": "Alex@example.net"
      }
    }
  }
}

同様に、 metricFilter フィールド RunAccessReportRequest オブジェクトを使用して、レポートのレスポンスを特定の指標値に制限することができます。 フィルタに一致します

次の例では、メールアドレスとアクセス数を含むレポートを生成します 指定したプロパティに 100 回を超えてアクセスしたすべてのユーザー。

HTTP

{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricFilter": {
    "accessFilter": {
      "numericFilter": {
        "operation": "GREATER_THAN",
        "value": {
          "int64Value": 100
        }
      },
      "fieldName": "accessCount"
    }
  },
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

サンプル レポート

次のようなサンプラー レポートをお試しください。

ユーザーごとの最新のアクセス権レポート

次のサンプル アクセス レポートは、runAccessReport を使用して作成できます。

最新のアクセス エポックタイム(マイクロ秒) User Email アクセス数
1525220215025371 Bola@example.net 5
1525220215028361 Alex@example.net 36
1525220215027671 Charlie@example.net 1153
1525220215027341 Mahan@example.net 1

このレポートは、クエリを実行して ディメンション mostRecentAccessEpochTimeMicros userEmailaccessCount 指標。「 レポートはユーザーごとに 1 行ずつ表示される: mostRecentAccessEpochTimeMicros プロパティにアクセスする各ユーザーのデータアクセス レコードを集計するディメンション そして、前回のアクセス時刻( epoch)の時系列が表示されます。

ユーザー アクセスの内訳レポート

アクセス数別のユーザー アクセスの内訳も、有用なレポートのもう一つの一例です。 メカニズム(Google アナリティクスのユーザー インターフェース、API など)。

最新のアクセス エポックタイム(マイクロ秒) User Email アクセス メカニズム アクセス数
1525220215028367 Alex@example.net Firebase 31
1525220215555778 Alex@example.net Google アナリティクスのユーザー インターフェース 1
1525220215022378 Bola@example.net Google アナリティクスのユーザー インターフェース 65
1525220215026389 Bola@example.net Google Analytics API 894
1525220215025631 Charlie@example.net Google Analytics API 67
1525220215068325 Mahan@example.net Google 広告 3

このレポートは、クエリを実行して ディメンション mostRecentAccessEpochTimeMicros userEmailaccessMechanismaccessCount metric です。

レポートには、ユーザーとアクセス メカニズムの組み合わせごとに 1 行が表示されます。「 mostRecentAccessEpochTimeMicros ディメンションには、ユーザーが最後に行った時刻が含まれます。 が、指定されたアクセス メカニズムを使用してプロパティにアクセスした。

プロパティのアクセス概要レポート

異なる時系列を含んでいなくても、プロパティのレポートを できます。たとえば次のレポートは、 さまざまなアクセス メカニズムを使用します。

アクセスされたプロパティ ID アクセスされたプロパティ名 アクセス メカニズム アクセス数
12345678 DemoApp Firebase 31
12345678 DemoApp Google アナリティクスのユーザー インターフェース 624
12345678 DemoApp Google 広告 83
12345678 DemoApp Google Analytics API 1744

このレポートは、クエリを実行して ディメンション accessedPropertyId accessedPropertyNameaccessMechanismaccessCount metric です。

レポートには、プロパティ ID とアクセス メカニズムの組み合わせごとに 1 行が表示されます。

個別のデータアクセス レポート

各行が個々のデータアクセスに基づくレポートを生成する クエリから mostRecentAccessEpochTimeMicros ディメンションを省略し、 代わりに epochTimeMicros ディメンションを使用してください。データをクエリする必要はなく、 accessCount 指標(レポートの各行には特定の期間に関する情報が含まれるため) 発生しません

次のレポートには、ユーザーが各デバイスでの ユーザーが指定したプロパティにアクセスしたことを意味します。

Unix エポック時間(マイクロ秒) User Email アクセスされたプロパティ ID アクセスされたプロパティ名 ユーザー IP アクセス メカニズム 返される費用データ 返される収益データ
1525220215025371 Bola@example.net 12345678 DemoApp 1.2.3.1 Google アナリティクスのユーザー インターフェース true true
1525220645645645 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google アナリティクスのユーザー インターフェース false false
1525220211312322 Bola@example.net 12345678 DemoApp 11.22.33.11 Google 広告 true false
1525220210234221 Alex@example.net 12345678 DemoApp 11.22.33.22 Firebase false false
1525220215028368 Alex@example.net 12345678 DemoApp 1.2.3.2 Google 広告 false false
1525220214234231 Mahan@example.net 12345678 DemoApp 11.22.33.55 Google 広告 true true
1525220423423452 Charlie@example.net 12345678 DemoApp 1.2.3.3 Google Analytics API true false
1525220132312333 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google 広告 true true

このレポートは、クエリを実行して ディメンション epochTimeMicrosuserEmailaccessedPropertyIdaccessedPropertyNameuserIPaccessMechanismcostDataReturnedrevenueDataReturned

クライアント ライブラリ

詳しくは、クイック スタートガイドをご覧ください。 クライアント ライブラリをインストールして構成する方法を確認する。

Python クライアント ライブラリを使用してデータアクセス クエリを実行する例を次に示します。 レスポンスを出力します。

Python

<ph type="x-smartling-placeholder"></ph> Cloud Shell で開く をご覧ください。 GitHub で表示
from datetime import datetime

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessDateRange,
    AccessDimension,
    AccessMetric,
    RunAccessReportRequest,
)


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    run_access_report(property_id)


def run_access_report(property_id: str, transport: str = None):
    """
    Runs an access report for a Google Analytics property. The report will
    aggregate over dimensions `userEmail`, `accessedPropertyId`,
    `reportType`, `revenueDataReturned`, `costDataReturned`,
    `userIP`, and return the access count, as well as the most recent access
    time for each combination.
    See https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema
    for the description of each field used in a data access report query.
    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    request = RunAccessReportRequest(
        entity=f"properties/{property_id}",
        dimensions=[
            AccessDimension(dimension_name="userEmail"),
            AccessDimension(dimension_name="accessedPropertyId"),
            AccessDimension(dimension_name="reportType"),
            AccessDimension(dimension_name="revenueDataReturned"),
            AccessDimension(dimension_name="costDataReturned"),
            AccessDimension(dimension_name="userIP"),
            AccessDimension(dimension_name="mostRecentAccessEpochTimeMicros"),
        ],
        metrics=[AccessMetric(metric_name="accessCount")],
        date_ranges=[AccessDateRange(start_date="yesterday", end_date="today")],
    )

    access_report = client.run_access_report(request)

    print("Result:")
    print_access_report(access_report)


def print_access_report(response):
    """Prints the access report."""
    print(f"{response.row_count} rows received")
    for dimensionHeader in response.dimension_headers:
        print(f"Dimension header name: {dimensionHeader.dimension_name}")
    for metricHeader in response.metric_headers:
        print(f"Metric header name: {metricHeader.metric_name})")

    for rowIdx, row in enumerate(response.rows):
        print(f"\nRow {rowIdx}")
        for i, dimension_value in enumerate(row.dimension_values):
            dimension_name = response.dimension_headers[i].dimension_name
            if dimension_name.endswith("Micros"):
                # Convert microseconds since Unix Epoch to datetime object.
                dimension_value_formatted = datetime.utcfromtimestamp(
                    int(dimension_value.value) / 1000000
                )
            else:
                dimension_value_formatted = dimension_value.value
            print(f"{dimension_name}: {dimension_value_formatted}")

        for i, metric_value in enumerate(row.metric_values):
            metric_name = response.metric_headers[i].metric_name
            print(f"{metric_name}: {metric_value.value}")