YTsudaのブログ

1985生まれ、男。東京で働くWeb制作者

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

とりあえずチュートリアル

Tutorial: Hello Analytics API

まずはこの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桁ほどの数字である。

  1. GoogleAnalyticsにログインし、任意のプロファイルを選択
  2. 上メニュー右側の「アナリティクス設定」をクリック
  3. 右端のカラム「ビュー(プロファイル)」の中から「ビュー設定」をクリック
  4. 「ビュー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