PythonからGoogle Analytics Reporing APIを使ってGoogleアナリティクスのからデータを取得してみましょう。実行するコードはGoogleが提供しているサンプルコードを利用します。

PythonなのでMACでもWindowsでもLinuxでもインストールを行えば使うことができインストールさえしてしまえば特別な環境構築は必要ないのですぐに動作確認することが可能です。今回はWindows10を使って動作確認を行います。

PythonがWindows 10 PCにインストール済みの状態から進めます。

Googleでの設定

Pythonに限らずnode.jsやPHPなど別の言語を使ってAPIを利用する場合にもこのGoogleでの設定は必要なのでPythonに限らず他の言語を利用する場合も活用することができます。さまざまページで設定方法が記述されていますが、Googleのページが日々更新されているので大半の情報が古いままです。2019年10月に近ければ本手順は参考になるかと思います。

APIからの接続を行う前に大きく分けて以下の3つの作業を行う必要があります。

  • サービスアカウントを作成して接続に必要な秘密鍵を取得
  • Google Analyticsのビューにユーザを追加、ビューIDの取得
  • Google Analytics Reporting APIの有効化

サービスアカウントの設定

Google Analyticsのレポートページにアクセスします。左側のReporting API V4のデータを取得するをクリックします。

Googleアナリティクスレポートページ
Googleアナリティクスレポートページ

Reporting API v4についての説明が記述されているのでページの一番下に移動して、サービスアプリケーションからPythonをクリックします。

Pythonページへ移動
Pythonページへ移動

Pythonクイックスタートのページに移動するので、認証情報を作成するの1.サービスカウントページのリンクをクリックしてください。

Pythonクイックスタート
Pythonクイックスタート

サービスアカウントのページに移動しますが、サービスアカウント作成の前にプロジェクトを作成する必要があります。右にある作成ボタンをクリックしてください。

プロジェクトの作成
プロジェクトの作成

プロジェクトの作成画面が表示されます。自動で名前がつけられているのでそのまま利用します。任意の名前を付けてください。名前を入力したら、作成ボタンをクリックしてください。

プロジェクトの作成
プロジェクトの作成

プロジェクトの作成が完了すると以下の画面が表示されるので、上部のサービスアカウントの作成をクリックしてください。

サービスアカウントの作成
サービスアカウントの作成

サービスアカウント名の入力画面が表示されるので、任意のサービスアカウント名を入力してください。ここではtest用なのでtestにしています。testを入力すると自動でサービスアカウントIDが入力されるので、そのままIDにします。入力が終わったら作成ボタンをクリックしてください。

サービスアカウント名をつける
サービスアカウント名をつける

権限の設定をきかれるので、役割のプルダウンメニューからプロジェクトの閲覧者を選択します。選択したら、続行ボタンをクリックします。

権限の設定
権限の設定

ユーザにこのサービスアカウントへのアクセス権を付与の箇所は何もいれないでその下のキーの作成をクリックします。

キーの作成
キーの作成

キーのタイプの選択画面が表示されるので、JSONのまま作成ボタンをクリックします。

キーのタイプの選択
キーのタイプの選択

秘密鍵がパソコンに保存されましたというメッセージが表示され、jsonファイルが保存されます。

キーの作成と秘密鍵のパソコンへの保存
キーの作成と秘密鍵のパソコンへの保存
Edgeブラウザでは保存がされませんでした。保存できないかった場合はブラウザを変更してキーを再作成してください。この画面の後に何度でも行えます。

アカウントとキーの作成は完了です。PythonでAPIを使用する際に保存したjsonファイルが必要となります。

次のGoogle Analyticsのビューにユーザを追加する際に追加したアカウントのメールが必要になります。

アカウントとキーの作成完了
アカウントとキーの作成完了

Google Analyticsのビューにユーザを追加とビューIDの取得

Google Analyticsのビューに作成したサービスアカウントのユーザを追加するためにGoogle Analyticsにログインして管理画面を表示します。

右側のビューの下にあるユーザ管理をクリックしてください。

Google Analytics管理画面
Google Analytics管理画面

下記の画面が表示されるおんで、右上にある+ボタンをクリックしてユーザを追加を選択してください。

ユーザの追加
ユーザの追加

サービスアカウント作成時に表示されていたメールアドレスを入力してください。権限は表示と分析にチェックを付けます。

ユーザ追加画面
ユーザ追加画面

追加したユーザが下記のように表示されていればユーザの追加は完了です。

ユーザ追加完了
ユーザ追加完了

ビューのIDがAPI接続する際に必要になるので、下記の黒塗りにしてあるIDを控えておいてください。

ビューIDの確認
ビューIDの確認

Google Analytics Reporting APIの有効化

Google Analytics Reporting APIを有効化するためにGoogle Platformライブラリに移動します。

検索窓にGoogle Analytics Reportingと入力してください。

APIライブラリ画面
APIライブラリ画面

検索結果が表示されるので、Google Analytics Reporting APIをクリックしてください。

検索結果が表示
検索結果が表示

有効になっていない場合は有効にするボタンが表示されるのでクリックしてください。もし有効になっている場合は、APIが有効ですと表示されます。

APIの有効化
APIの有効化

これでAPIを利用するためのGoogle側の設定は完了です。

Pythonの設定

ライブラリのインストール

Pythonを使ってAPI接続するためにライブラリをインストールする必要があります。ライブラリのインストールにはpipコマンドを利用します。


pip install --upgrade google-api-python-client

サンプルコードを実行した場合に下記のエラーが表示される場合はoauth2clientライブラリもインストールする必要があります。

from oauth2client.service_account import ServiceAccountCredentials
ModuleNotFoundError: No module named ‘oauth2client’


pip install --upgrade oauth2client

サンプルコードの利用

Python クイックスタートのページの下部にPythonのサンプルコードが記述されています。そのサンプルコードをそのまま利用します。ファイル名は、ドキュメントと同じHelloAnalytics.pyにします。

実行前にサンプルコードに以下の3点変更が必要です。

  • REPLACE_WITH_JSON_FILEと記述されている場所に秘密鍵を作成した際に保存したjsonファイルを指定してください。
  • REPLACE_WITH_VIEW_IDはGoogle Analyticsの管理画面で確認したっビューIDを入力します。
  • printをprint()に変更する。Python3ではprintには()カッコが必要なのでもしエラーが表示された場合は()をつけてください。3か所変更箇所があります。

"""Hello Analytics Reporting API V4."""

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

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = ''
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):
  """Queries the Analytics Reporting API V4.

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}],
          'dimensions': [{'name': 'ga:country'}]
        }]
      }
  ).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', []):
      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

def main():
  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  print_response(response)

if __name__ == '__main__':
  main()

サンプルコードの時刻

作成したHelloAnalytics.pyをpythonコマンドで実行します。

実行すると1週間分の国別のセッション数が表示されます。Australiaからは3セッション、Bangladeshからは1セッションがあったことがわかります。


>python HelloAnalytics.py
ga:country: (not set)
Date range: 0
ga:sessions: 2
ga:country: Australia
Date range: 0
ga:sessions: 3
ga:country: Bangladesh
Date range: 0
ga:sessions: 1
 ・
 ・
 ・