2016/04/01更新

[Python] Google AnalyticsをAPI経由で使う

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
仕事では担当のWebアプリケーションについて様々な分析を行っていますが、その中の一つでGoogle Analyticsを用いた分析をしています。GAを用いた分析ではPythonを用いてデータを取得していて、好みに応じた分析を行っています。
このブログでは、PythonからGoogle Analyticsを利用する方法を書きたいと思います。

画像


セットアップ

PythonからGoogle Analyticsを利用するためには、以下の準備が必要です。
  • Python用のGoogle APIライブラリの導入
  • Google Developer Consoleの設定
1つずつ見ていきたいと思います。


Python用のGoogle APIライブラリを導入する

Googleサービスを使うためのAPIをインストールします。pipなどのパッケージ管理ツールから簡単にインストールできます。
$ pip install --upgrade google-api-python-client

pip以外にもeasy_installや手動インストールなどの方法があります。詳しくはGoogle Developer Site(日本語)をご覧ください。


Google AnalyticsのAPI有効化

基本的には、Google Developer Site(日本語)のステップ1を実施します。その手順の結果、

  • Developer ConsoleでGoogle AnalyticsのAPIが有効化されている
  • client_secrets.p12などp12ファイルが手元にある
  • API用のメールアドレスが手元にある
  • API用のメールアドレスが、Google Analyticsの該当のビューに設定されている

ができていれば問題ないと思います。僕の場合には「API用のメールアドレスをGAの設定に追加する」ところを忘れていて、その後の実装部分で認証が通らずにつまずきましたw。


分析対象のビューIDを取得する

準備の最後として、APIでアクセスするGAのビューのIDを取得します。
Google Analyticsでアクセスしたいビューを開いて、「アナリティクスの設定 -> ビュー -> ビュー設定」から確認できます。

以上で準備は完了です!以降では実装や実装のためのリファレンスを紹介します。



APIでGoogle Analyticsにアクセスする

それではさっそくGoogle AnalyticsにAPIでアクセスしてみましょう。下記では2015/10/2〜10/3の2日間で、国別のセッション数とHit数を取得しています。
# -*- coding: utf-8 -*-
# Google Analytics API
import httplib2
import oauth2client
import apiclient

# APIに利用する情報(スコープ、メールアドレス)
scope = ["https://www.googleapis.com/auth/analytics.readonly"]
service_account_email = "[あなたのメールアドレス]@developer.gserviceaccount.com"

# 秘密鍵の読み込み
key_file = "client_secret.p12"
with open(key_file, 'rb') as f:
    key = f.read()

# OAuth認証の準備
credentials = oauth2client.client.SignedJwtAssertionCredentials(service_account_email, key, scope=scope)
http = credentials.authorize(httplib2.Http())

# コネクション作成
service = apiclient.discovery.build("analytics", "v3", http=http)


# データ取得
# 国別(=ディメンション)にセッション数とHit数(=メトリクス)を取得する
ga_results = service.data().ga().get(
    ids="ga:[あなたのビューID]",       # ビューID
    start_date='2015-10-02',        # 開始年月日
    end_date='2015-10-03',          # 終了年月日
    dimensions="ga:country",        # ディメンション
    metrics="ga:sessions, ga:hits", # メトリクス
    max_results=5,                  # 最大件数
    sort="-ga:sessions"             # ソート(セッション数の降順)
).execute()

# 取得した結果を表示
rows = ga_results.get('rows')
for row in rows:
    print("country=%s, session=%s, hits=%s" % (row[0], row[1], row[2]))
# country=Japan, session=3006, hits=155778
# country=Turkey, session=1666, hits=78315
# country=United States, session=157, hits=8476
# country=France, session=150, hits=7826
# country=Netherlands, session=125, hits=7055

上記のAPIでは、Google AnalyticsのWebでの使い方と同じく、ディメンションとメトリクスを用いた2軸のデータを取得できます。

◆2016年3月31日追伸

認証方法に変更があり、oauth2clientのバージョンが2以上の場合は、Google各種サービスのAPIの認証方法(v.2)で認証を行う必要があります。


Core Reporting APIの詳細

上記ではservice.data().ga().get()メソッドを使いましたが、get()の引数を色々と指定することで、様々な絞り込みを行うことができます。例えば、

  • 期間の指定
  • ディメンションの指定
  • メトリクスの指定
  • セグメントの指定
  • フィルターの指定
  • など
具体的に指定できる内容の一覧とその使い方は、Core Reporting API - リファレンス ガイド(日本語)をご参照ください。



指定可能なディメンションとメトリクス

上記のサンプルでは、「国」「セッション数」「ヒット数」をディメンションやメトリクスに指定しましたが、それら以外ももちろん指定可能です。指定可能なディメンションとメトリクス一覧や、組み合わせ可能なものなど、詳細はDimensions & Metrics Explorer | アナリティクス Core Reporting API(英語)をご参照ください。



参考文献

PythonからGoogle Analytics APIを使えるようになるために、以下のリファレンスを参照しました。ありがとうございます。

はじめてのアナリティクス API: サービス アカウント向け Python クイックスタート(日本語)

Core Reporting API - リファレンス ガイド(日本語)

Dimensions & Metrics Explorer | アナリティクス Core Reporting API(英語)



最後に

今回のブログではPythonからGoogle Analytics APIを用いる実装の紹介でした。実案件ではこの機能を使って、毎日自動的にJenkinsで集計しています。
分析内容は、GAから取得するimpやclickの情報と、本番データベースの内容を結合して、様々な分析を行っています。ブログでは分析の詳細は語れませんが、いつかどこかで誰かと話ができて盛り上がれれたらなぁと思う今日この頃です。

最後になりますが本ブログでは、フロントエンドのネタやPythonネタを中心に情報を発信しています。気になった方はぜひ、RSSTwitterをフォローして頂けますと幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。