Google Analytics のAPIとRubyでのサンプル 2013/06/13
集計結果を取得できるAPIが提供されている。
APIアクセスのための、PHP, Ruby, JavaなどのライブラリやサンプルコードをGoogleが提供している。
https://developers.google.com/analytics/devguides/reporting/core/v3/gdataLibraries
APIの認証は、OAuth2.0。
期間、dimensions, metrics を指定して集計結果を取得できる。dimensionsとして、日付、URL、参照元、ブラウザの種類など、 metricsとして、訪問数、PVなどが使える。
https://developers.google.com/analytics/devguides/reporting/core/dimsmets
Google APIs Explorer 2013/09/09
https://developers.google.com/apis-explorer/#p/
ブラウザから簡単にGoogleの各種APIを試すことができる。
APIの制限 2013/06/13
- 1ユーザ毎秒1リクエストまで (設定で変更可能)
- 全ユーザ合計毎日5万リクエストまで (Quota Request Form あり)
APIにアクセスする準備 2013/06/13
Google API console
https://developers.google.com/console/
Google API console のページで “Create project …” ボタンを押して、プロジェクトを作成して、いろいろ設定する。
Rubyでのサンプルコード 2013/06/17
phase1.rb
# -*- coding: utf-8 -*-
require 'google/api_client'
client = Google::APIClient.new
# API console
# https://developers.google.com/console/
# で取得できる Client ID, Client secret をここに書く
#
# このRubyのライブラリでは、
# Web Application として登録が必要みたい
# Client ID
client.authorization.client_id = '999999999999-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com'
# Client secret
client.authorization.client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxx'
# 自分のアプリ側でコールバックを受けるURLをここに書く。
# 実際にコールバックを受けるときにはこのURLの後ろに
# ?code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# というようなパラメータが渡される。
client.authorization.redirect_uri = 'http://myapp.example.com/callback'
# OAuthでGoogleアカウントのどんな権限を必要とするのかを以下に書く。
#
# Analyticsのレポート取得で必要な権限の説明は以下に書いてある。
# https://developers.google.com/analytics/devguides/reporting/core/v3/gdataAuthorization#OAuth2Scope
#
client.authorization.scope = 'https://www.googleapis.com/auth/analytics.readonly'
redirect_uri = client.authorization.authorization_uri
puts redirect_uri
#
# ブラウザでGoogleアカウントにログインしておいて、
# ここで表示されたURLにブラウザアクセスすると、
# 認可の画面が表示されるので、"アクセスを許可" のボタンを押す。
#
# すると、client.authorization.redirect_uri に設定したURLにリダイレクトされるが、
# そのときに code というパラメータを渡されるので、
# その値を次の phase2.rb に書く。
phase2.rb
# -*- coding: utf-8 -*-
require 'google/api_client'
client = Google::APIClient.new
client.authorization.client_id = '999999999999-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com'
client.authorization.client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxx'
client.authorization.redirect_uri = 'http://myapp.example.com/callback'
client.authorization.scope = 'https://www.googleapis.com/auth/analytics.readonly'
# phase1.rb で取得したcodeをここに書く
client.authorization.code = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
p client.authorization.fetch_access_token!
# ここでaccess_tokenなどがHashで表示されるので、
# それを次の phase3.rb に書く
phase3.rb
# -*- coding: utf-8 -*-
require 'google/api_client'
client = Google::APIClient.new
# phase2.rb で取得したHashをここに書く
client.authorization.update_token!({"access_token"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "token_type"=>"Bearer", "expires_in"=>3600, "refresh_token"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"})
analytics = client.discovered_api('analytics', 'v3')
result = client.execute(
:api_method => analytics.management.profiles.list,
:parameters => {'accountId' => '~all', 'webPropertyId' => '~all'}
)
p result.data
# ここでいろいろ表示されるが、idの値(8桁の数字の)を拾って、
# それを次の phase4.rb に書く
phase4.rb
# -*- coding: utf-8 -*-
require 'google/api_client'
client = Google::APIClient.new
# phase2.rb で取得したHashをここに書く
client.authorization.update_token!({"access_token"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "token_type"=>"Bearer", "expires_in"=>3600, "refresh_token"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"})
analytics = client.discovered_api('analytics', 'v3')
# idsのところには、phase3.rb で取得した8桁の数字のidに 'ga:' を付けて書く
result = client.execute(
:api_method => analytics.data.ga.get,
:parameters => {'ids' => 'ga:99999999', # Unique table ID
# for retrieving Analytics data.
# Table ID is of the form ga:XXXX,
# where XXXX is the Analytics profile ID.
'start-date' => '2013-06-01',
'end-date' => '2013-06-10',
'dimensions' => 'ga:date,ga:pagePath',
'metrics' => 'ga:visitors,ga:pageviews'})
p result.data.rows