こんにちは!! tahara です。 Ruby で Google Analytics API をたたいてみました。
といっても Garb を使えば簡単です。 ユーザID(email)とパスワードでも認証ができるのですが、今回は OAuth を使います。
インストール
gem install garb oauth
まずは Google Analytics, OAuth and Ruby. Oh, my. | everburning を参考に OAuth します。 あらかじめ https://www.google.com/accounts/ManageDomains から CONSUMER_KEY と CONSUMER_SECRET を取得しておく必要があります。
# -*- coding: utf-8 -*- require 'oauth' CONSUMER_KEY = "xxxxxx" CONSUMER_SECRET ="xxxxxxxxx" consumer = OAuth::Consumer.new CONSUMER_KEY, CONSUMER_SECRET, { :signature_method => 'HMAC-SHA1', :site => 'https://www.google.com', :request_token_path => '/accounts/OAuthGetRequestToken', :authorize_path => '/accounts/OAuthAuthorizeToken', :access_token_path => '/accounts/OAuthGetAccessToken', } request_token = consumer. get_request_token({}, :scope => "https://www.google.com/analytics/feeds/") # 次の URL をブラウザでアクセスし、確認コードを取得する。 p request_token.authorize_url # 取得した確認コード ACCESS_CODE = "xxxxxxxxx" # 確認コードからアクセストークンを取得 access_token = request_token.get_access_token(:oauth_verifier => ACCESS_CODE) # access_token.token と access_token.secret を取得する。 p access_token.token p access_token.secret ACCESS_TOKEN = access_token.token ACCESS_SECRET = access_token.secret # 次回からは次のようにしてアクセストークンを生成する。 access_token = OAuth::AccessToken.new(consumer, ACCESS_TOKEN, ACCESS_SECRET)
CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET がそろったので準備完了です。 Garb を使ってみます。 次は正規表現 ^/facilities/[0-9]+$ にマッチするページのページビューを取得するコードです。
# -*- coding: utf-8 -*- =begin http://github.com/vigetlabs/garb =end require "garb" require "oauth" CONSUMER_KEY = "xxxxx" CONSUMER_SECRET ="xxxxxx" ACCESS_TOKEN = "xxxxx" ACCESS_SECRET = "xxxxx" consumer = OAuth::Consumer.new CONSUMER_KEY, CONSUMER_SECRET, { :signature_method => 'HMAC-SHA1', :site => 'https://www.google.com', :request_token_path => '/accounts/OAuthGetRequestToken', :authorize_path => '/accounts/OAuthAuthorizeToken', :access_token_path => '/accounts/OAuthGetAccessToken', } access_token = OAuth::AccessToken.new(consumer, ACCESS_TOKEN, ACCESS_SECRET) Garb::Session.access_token = access_token # プロファイル を指定 profile = Garb::Profile.first('UA-xxxxxxx-x') class PageView extend Garb::Resource # 横に並ぶ項目。複数指定可能 metrics :pageviews # 縦に並ぶ項目。複数指定可能 dimensions :page_path # 並び順。複数指定可能。降順は後に .desc をつける。 sort :pageviews.desc # フィルタ filters do # 正規表現で指定可能 # http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataReferenceDataFeed.html#filters # http://www.google.com/support/analytics/bin/answer.py?answer=55582 contains(:page_path, '^/facilities/[0-9]+$') end end # OpenStruct の配列で結果を取得。最大 10000 件取得できる。:offset で取得開始位置も指定可能。 res = PageView.results(profile, :start_date => '2010-07-01'.to_date, :end_date => '2010-07-07'.to_date, :limit => 10000) # => [#<OpenStruct page_path="/facilities/159", pageviews="1237">, #<OpenStruct page_path="/facilities/164", pageviews="1061">, ...]
Data Feed Query Explorer - Google Analytics - Google Code ではブラウザから Analytics Data Export API をたたけるようになっていますので、 このページを参考にしながら、 metrics や dimensions の設定をいろいろかえると面白いことができるかもしれません。