Python で Google Analytics API を使うためにやったこと
やりたいこと
- とあるページのとある日のPV数を自動で取得し、別のアプリ内で使いたい
- pythonでやりたい
ライブラリのインストール
という3つのライブラリを pip で入れる
$ sudo pip install httplib2 $ sudo pip install python-gflags $ sudo pip install google-api-python-client
chefのレシピに書く場合は python_pip というディレクティブを使う。
chef_recipe_for_google_api_with_python
python_pip "httplib2" do action :install end python_pip "python-gflags" do action :install end python_pip "google-api-python-client" do action :install end
とりあえずチュートリアル
まずはこのGoogle公式チュートリアルをやった。
このチュートリアル内で作る hello_analytics_api_v3_auth.py というファイルのコードは、実際のプロジェクトでもそのまま使いまわせるので一度やっておくべき。というより、このチュートリアルを通らずに認証まわりを1から勉強するのは非常に面倒だと思われる。
チュートリアルのファイルをコピペ
チュートリアルで作った hello_analytics_api_v3.py をコピーして任意のファイルを作り、 import 部以下を全部消す。するとこんなファイルになる。
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import hello_analytics_api_v3_auth from apiclient.errors import HttpError from oauth2client.client import AccessTokenRefreshError
ビューID(プロファイルID)を取得
取得先のサイトを決めるため、ビューIDが必要になる。ビューIDは8桁ほどの数字である。
- GoogleAnalyticsにログインし、任意のプロファイルを選択
- 上メニュー右側の「アナリティクス設定」をクリック
- 右端のカラム「ビュー(プロファイル)」の中から「ビュー設定」をクリック
- 「ビューID」をコピー
最初のリクエスト
リクエストに使うメソッドは極めてシンプルで1つだけ。
service.data().ga().get()
このgetメソッドに色々な引数を与えていく。 先ほど作ったファイルに以下のように書き加える。
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import hello_analytics_api_v3_auth from apiclient.errors import HttpError from oauth2client.client import AccessTokenRefreshError service = hello_analytics_api_v3_auth.initialize_service() results = service.data().ga().get( ids='ga:' + VIEW_ID, start_date='2013-10-13', end_date='2013-10-13', metrics='ga:pageviews', filters='ga:pagePath==/signup').execute() print results.get('rows')[0][0]
出力は以下
1281
上記は10/13日の /signup ページのPVを取得するクエリとなる。VIEW_ID は先ほど調べたビューIDと置き換える。
クエリの出し方を勉強する
ここまでくれば、あとはクエリの出し方を学ぶだけだ。
学ぶべき点は2つある。一つはgetメソッドの引数とその与え方、もう一つはディメンションとメトリクスについて。
getメソッドの引数と与え方
これについては以下のページに目を通せばだいたい解る。返り値の解説もある(dumpすれば大体わかるけど)。
Core Reporting API - Reference Guide
ディメンションとメトリクス
ディメンションとは値の分け方のことで、MySQLで言えば GROUP BY である。 メトリクスとは値の種類のことで、MySQLで言えばそれぞれのカラム名、SELECT ... の部分である。
ディメンションとメトリクスについては以下のリファレンスに目を通せばOK。 Dimensions & Metrics Reference