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

  • 2021年5月22日
  • Python
  • 32view

Google Analytics Reporting API v4を使って、ページビューなどのAnalyticsデータを取る方法については参考記事が沢山あるのでそんなに難しくないかと思います。

 

しかし、イベントトラッキングをしていた場合、Google Analytics APIでイベント情報まで取得する例がなかったので記事化します!

 

 

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

 

 

前提条件

 

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

  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回)

 

 

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

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

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

CTR IMG