[Python] Google AnalyticsをAPI経由で使う
こんにちは、@yoheiMuneです。
仕事では担当のWebアプリケーションについて様々な分析を行っていますが、その中の一つでGoogle Analyticsを用いた分析をしています。GAを用いた分析ではPythonを用いてデータを取得していて、好みに応じた分析を行っています。
このブログでは、PythonからGoogle Analyticsを利用する方法を書きたいと思います。
ができていれば問題ないと思います。僕の場合には「API用のメールアドレスをGAの設定に追加する」ところを忘れていて、その後の実装部分で認証が通らずにつまずきましたw。
Google Analyticsでアクセスしたいビューを開いて、「アナリティクスの設定 -> ビュー -> ビュー設定」から確認できます。
以上で準備は完了です!以降では実装や実装のためのリファレンスを紹介します。
上記のAPIでは、Google AnalyticsのWebでの使い方と同じく、ディメンションとメトリクスを用いた2軸のデータを取得できます。
はじめてのアナリティクス API: サービス アカウント向け Python クイックスタート(日本語)
Core Reporting API - リファレンス ガイド(日本語)
Dimensions & Metrics Explorer | アナリティクス Core Reporting API(英語)
分析内容は、GAから取得するimpやclickの情報と、本番データベースの内容を結合して、様々な分析を行っています。ブログでは分析の詳細は語れませんが、いつかどこかで誰かと話ができて盛り上がれれたらなぁと思う今日この頃です。
最後になりますが本ブログでは、フロントエンドのネタやPythonネタを中心に情報を発信しています。気になった方はぜひ、RSSやTwitterをフォローして頂けますと幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
仕事では担当のWebアプリケーションについて様々な分析を行っていますが、その中の一つでGoogle Analyticsを用いた分析をしています。GAを用いた分析ではPythonを用いてデータを取得していて、好みに応じた分析を行っています。
このブログでは、PythonからGoogle Analyticsを利用する方法を書きたいと思います。
セットアップ
PythonからGoogle Analyticsを利用するためには、以下の準備が必要です。- Python用のGoogle APIライブラリの導入
- Google Developer Consoleの設定
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()
の引数を色々と指定することで、様々な絞り込みを行うことができます。例えば、- 期間の指定
- ディメンションの指定
- メトリクスの指定
- セグメントの指定
- フィルターの指定
- など
指定可能なディメンションとメトリクス
上記のサンプルでは、「国」「セッション数」「ヒット数」をディメンションやメトリクスに指定しましたが、それら以外ももちろん指定可能です。指定可能なディメンションとメトリクス一覧や、組み合わせ可能なものなど、詳細は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ネタを中心に情報を発信しています。気になった方はぜひ、RSSやTwitterをフォローして頂けますと幸いです ^ ^。
最後までご覧頂きましてありがとうございました!