Google Analytics Reporting API v4でイベントデータを取得する

  • 2021年5月22日
  • 2023年1月13日
  • Python
  • 914view

Google Analytics Reporting API v4を使って、ページビューなどのAnalyticsデータを取る方法については参考記事が沢山あるのでそんなに難しくないかと思います。しかし、イベントトラッキングをしていた場合、Google Analytics APIでイベント情報まで取得する例がなかったので記事化します!

この記事では、Pythonを利用してReporting API v4を使って、イベント情報を取得する方法を解説します。

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

前提条件

この記事では、以下のことが終わっていることを前提として書きます。

  1. Analytics APIの設定を行う
  2. Google Analytics apiライブラリーのインストール(この記事ではPython)

 

なお、Analytics APIの設定方法については、以下の記事が参考になります。

アナリティクス Reporting API v4を使ってGoogle Analyticsのデータを取得する

Reporting API を使ってイベント情報まで取得する

Reporting API を使って、ページビューおよびイベント情報を取得する例を記載します。

ポイントは、apiにリクエストする際「dimensions」に以下の情報を追加することです。

{“name”: “ga:eventAction”},{“name”: “ga:eventCategory”}

 

詳しい資料は以下の通り

https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/?#ga:avgTimeOnPage


from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

#Reporting API v4 対応済み
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = 'client_secrets.json' # Path to client_secrets.json file.
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'


def initialize_analyticsreporting():
    """Initializes an Analytics Reporting API V4 service object.

    Returns:
    An authorized Analytics Reporting API V4 service object.
    """
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

    # Build the service object.
    analytics = build('analyticsreporting', 'v4', credentials=credentials)

    return analytics



def get_report(analytics, next_page_token="0"):
    """Queries the Analytics Reporting API V4.
     公式サイトの例では、ページビューまでの取得方法だが、ここではイベントトラッキングをした場合のデータ取得方法を記載する

    Args:
    analytics: An authorized Analytics Reporting API V4 service object.
    Returns:
    The Analytics Reporting API V4 response.

    """
    #metrics,dimensionsの設定は以下の資料を参考にすること
    #https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/?#ga:avgTimeOnPage
    request_body = {
        "reportRequests": [{
            "viewId": VIEW_ID,
            "pageSize": 100000,
            "pageToken": next_page_token,
            "dateRanges": [{'startDate': '7daysAgo', 'endDate': 'today'}],
            #ページビュー、ユーザー数、平均滞在時間を出す
            "metrics": [{"expression": "ga:pageviews"},{"expression": "ga:users"},{"expression": "ga:avgTimeOnPage"}],
            #"metrics": [{"expression": "ga:users"}]
            
            #どこのページ(タイトルも入れておく)のイベントなのか知りたいので、「pagePath」「eventAction」は必須
            "dimensions": [{"name": "ga:pagePath"}, {"name": "ga:pageTitle"},{"name": "ga:eventAction"},{"name": "ga:eventCategory"}],
            "orderBys": [{"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}]
        }]
    }
    return analytics.reports().batchGet(body=request_body).execute()


def print_response(response):
    """Parses and prints the Analytics Reporting API V4 response.

    Args:
    response: An Analytics Reporting API V4 response.
    """
    for report in response.get('reports', []):
        columnHeader = report.get('columnHeader', {})
        dimensionHeaders = columnHeader.get('dimensions', [])
        metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])

    for row in report.get('data', {}).get('rows', []):
        print("-------------")
        dimensions = row.get('dimensions', [])
        dateRangeValues = row.get('metrics', [])

        for header, dimension in zip(dimensionHeaders, dimensions):
            print(header + ': ', dimension)

        for i, values in enumerate(dateRangeValues):
            print('Date range:', str(i))
            for metricHeader, value in zip(metricHeaders, values.get('values')):
                  print(metricHeader.get('name') + ':', value)


# In[ ]:


analytics = initialize_analyticsreporting()
response = get_report(analytics)
print_response(response)


その結果、以下のようにイベント情報も取得できるようになりました。

---------
ga:pagePath:  /blog/
ga:pageTitle:  ペン太ブルBlog | プログラミングスクール、転ばぬ先のプログラミングのノウハウなど発信
ga:eventAction:  scroll_20%
ga:eventCategory:  page_scroll
Date range: 0
ga:pageviews: 0
ga:users: 3
ga:avgTimeOnPage: 0.0
---------
ga:pagePath:  /blog/
ga:pageTitle:  ペン太ブルBlog | プログラミングスクール、転ばぬ先のプログラミングのノウハウなど発信
ga:eventAction:  scroll_50%
ga:eventCategory:  page_scroll
Date range: 0
ga:pageviews: 0
ga:users: 3
ga:avgTimeOnPage: 0.0
---------

「eventAction」「eventCategory」が存在することがわかるかと思います。

 

参考になった記事やサイト

最後に、この記事を書く際、および調査に役立った記事を紹介します!

アナリティクス Reporting API v4を使ってGoogle Analyticsのデータを取得する

 

高度な分析に役立つ! GoogleアナリティクスAPIでよく使う軸・指標、セグメントを紹介(第2回)

 

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア
最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG