2016-03-14

Google Analytics APIとD3.jsでアクセス数をビジュアライズ

Google Analytics APID3.jsでブログ記事ごとのアクセス数をビジュアライズしてみました。

基本事項

Google Analytics APIではGoogleによって集計されたデータを取得することができます。つまり、APIで取得できるのはGoogle Analyticsの管理画面で閲覧できる情報と同等である、ということです。一個一個のアクセスデータを取得したい場合はGoogle Analytisのプレミアプラン(月額130万!)に登録して、BigQueryにインポートすればOKです。

詳細はこちらを参照↓ Googleアナリティクスプレミアム+Big Queryで実践する、カスタマージャーニーセミナー 第二部

Google Analytics APIを手軽に試す

各種設定をしなくても、以下のURLからOAuth2.0でGoogle AnalyticsのAPIを試すことが可能です。

Google APIs Explorer

GAによる集計結果を取得したい場合はanalytics.data.ga.getを利用することになります。代表的なパラメータの説明はこんな感じ

ビューの名前をセットします。ビューIDの確認の方法は以下のURLを参考にしてください。↓ http://www.teradas.net/archives/11637/

抽出するログの開始日を指定します。YYYY-MM-DD形式だけでなくtoday等の相対日付を利用することも可能です。

抽出するログの終了日を指定します。

測定する値を指定します。セッション数であれば"ga:sessions"、ページビュー数であれば"ga:pageviews"を指定します。

各ディメンションやメトリクスに対するパラメータ値はDimensions & Metrics Explorerに記載されています。

設定

Developer ConsoleでAnalytics APIを有効化して、サービスアカウントを作成します。

まずは[権限]の[サービスアカウント]から[サービスアカウントを作成]ボタンを押下します。

create-service-account1

次に各種情報を入力します。新しい秘密鍵の提供にチェックを付けて[作成]ボタンを押下してください。キーのタイプはJSON、p12のどちらでも問題ないです。(下記のpythonコードはJSONファイルを想定)

create-service-account2

pythonコードを記述

pipで依存ライブラリをインストール
$ pip install httplib2
$ pip install google-api-python-client

コードはこんな感じで。KEY_LOCATIONはサービスアカウント作成時に取得した秘密鍵入りJSONファイルのパス、SERVICE_ACCOUNT_EMAILはサービスアカウントID、VIEW_IDはGoogle AnalyticsのビューIDを指定します。

#!/usr/bin/python
# -*- coding: utf-8 -*-

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
import json
import httplib2
import re

KEY_LOCATION = '/path/to/file.json'
SERVICE_ACCOUNT_EMAIL = 'hoge@example.iam.gserviceaccount.com'
VIEW_ID = '********'


def get_service(api_name, api_version, scope, key_file_location,
                service_account_email):

    credentials = ServiceAccountCredentials.from_json_keyfile_name(
                    key_file_location, scopes=scope)

    http = credentials.authorize(httplib2.Http())

    # Build the service object.
    service = build(api_name, api_version, http=http)

    return service

service = get_service(
    'analytics',
    'v3',
    ['https://www.googleapis.com/auth/analytics.readonly'],
    KEY_LOCATION,
    SERVICE_ACCOUNT_EMAIL
)

results = service.data().ga().get(
        ids='ga:' + VIEW_ID,
        start_date='yesterday',
        end_date='yesterday',
        metrics='ga:pageviews,ga:sessions',
        dimensions='ga:pagePath',
        sort='-ga:pageviews').execute()

# d3.jsの表示用に加工
p = re.compile('/blog/([^/]+)/')
children = []
for row in results.get('rows'):
    match = p.match(row[0])
    if match is not None and int(row[1]) > 4:
        children.append({
            "name": match.groups()[0],
            "size": row[1]
        })

print json.dumps({
 "name": "Data",
 "children": children
})

D3.jsでビジュアライズ

ブログのページビュー数でバブルチャート作ってみました。

google-analytics-d3

実はsambaの記事が売れまくってるのです。

参考URL

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