Google Analyticsデータ取得Gem「Garb」の使い方

Google Analyticsデータ取得Gem「Garb」の使い方

最近、色々な数値を社内のIRCに自動投稿するツールを作るのにハマっています。投稿している数値とは、前日の売上とか、契約数とかですね。メールでも送信はされていますが、読んでくださいと言われても、埋もれて読まないことも多く、みんなが気軽に読める場所へアウトプットするのは結構便利です。さらに今回Google Analyticsからも数値を拾ってみましたので、その紹介です。

Google Analytics API用のgemとして、「Garb」があります。RubyGemsに登録されている本家のGarbはvigetlabs/garbなんですが、残念ながら2011年12月のversion 0.9.1を最後に更新が止まってしまっていて、今(2012/11)は動きません。issueを見ると、俺のを使えよ!というコメントがありますので、Sija/garbversion 0.9.7を使います。

普通に

 $ gem install garb 

すると、動作しない(0.9.1)がインストールされるので、下記手順でお試しください。

fork先のSija/garbをインストール

  1. cloneしてソースをダウンロードします

      $ git clone https://github.com/Sija/garb.git
      $ cd garb
    
  2. gemをビルドしてインストール
    あとはrake installを叩くだけ

      $ rake install
      garb 0.9.7 built to pkg/garb-0.9.7.gem
      garb (0.9.7) installed
    

    もしくは、手動でGemをビルド&インストールしてもOKです

      $ gem build garb.gemspec
      WARNING:  no description specified
        Successfully built RubyGem
        Name: garb
        Version: 0.9.7
        File: garb-0.9.7.gem
      $ gem i garb-0.9.7.gem
      Successfully installed garb-0.9.7
      1 gem installed
      Installing ri documentation for garb-0.9.7...
      Installing RDoc documentation for garb-0.9.7...
    

Garbを使ってみよう

  1. ログイン

    OAuthのやり方もありますが、ID/Passwordでのログインの方が簡単なのでそちらでやります。

      Garb::Session.login(username,  password)
    
  2. Profileの特定

    1つのアカウントで複数のサイトを管理していることが多いので、トラッキングIDで調べたいサイトを絞り込みます。

      profile = Garb::Management::Profile.all.detect do
        |p| p.web_property_id == 'UA-XXXXXXXX'
      end
    
  3. 指標とディメンションを設定

    指標とディメンションをGarb::Modelをextendしたクラスに定義します。
    何を指定すればいいかは、カスタムレポートを作る場合と一緒です。こちらのGoogle Analyticsのカスタムレポートを使い倒す為の第一歩!時間/日付/曜日、各時間軸のカスタムレポートを作ってみる!
    を見れば、大変わかりやすいです。実際に指定するシンボルは、Dimensions & Metrics Referenceの「ga:」を除いた文字でOKです。

    試しに、何日にアクセスが多いか調べてみます。指標には知りたい数値、ページビューを指定します。ディメンションには何を基準に解析結果をまとめるか、日付を指定します。

      class Pageviews
        extend Garb::Model
    
        metrics :pageviews
        dimensions :date
      end
    
  4. 結果を表示する

    指標とディメンションを指定したクラス名をprofileのメソッドとして、呼び出すことが出来ます。引数で結果をフィルタリングすることも出来ます。

      results = profile.pageviews(limit: 10, sort: :pageviews.desc)
      results.each do |result|
        p "pageviews:#{result.pageviews} date:#{result.date} title:#{result.page_title}"
      end
    

    または、こんな呼び出し方も出来ます。

      results = Pageviews.results(profile, limit: 10, sort: :pageviews.desc)
      results.each do |result|
        p "pageviews:#{result.pageviews} date:#{result.date} title:#{result.page_title}"
      end
    

最後にサンプルプログラム

 # -*- encoding: utf-8 -*-
 require "rubygems"
 require "garb"

 username = "xxxxxxxxx"
 password = "xxxxxxxxx"

 Garb::Session.login(username,  password)
 profile = Garb::Management::Profile.all.detect do
   |p| p.web_property_id == 'UA-36258133-1'
 end

 class Pageviews
   extend Garb::Model
   metrics :pageviews
   dimensions :date,  :page_title
 end

 results = profile.pageviews(limit: 10, sort: :pageviews.desc)
 results.each do |result|
   p "pageviews:#{result.pageviews} date:#{result.date} title:#{result.page_title}"
 end

 # >> "pageviews:60 date:20121114 title:tsuchikazu blog"
 # >> "pageviews:55 date:20121112 title:ActiveRecordを単体で使うには | tsuchikazu blog"
 # >> "pageviews:49 date:20121112 title:tsuchikazu blog"
 # >> "pageviews:37 date:20121113 title:tsuchikazu blog"
 # >> "pageviews:33 date:20121116 title:ActiveRecordを単体で使うには | tsuchikazu blog"
 # >> "pageviews:29 date:20121113 title:LinuxにRuby on Railsをインストールする | tsuchikazu blog"
 # >> "pageviews:28 date:20121114 title:Javaの人間がRubyの世界に入って一番感じる1つの違いtsuchikazu blog | tsuchikazu blog"
 # >> "pageviews:24 date:20121116 title:tsuchikazu blog"
 # >> "pageviews:19 date:20121112 title:LinuxにRuby on Railsをインストールする | tsuchikazu blog"
 # >> "pageviews:18 date:20121112 title:WordPressでMarkdown + Syntaxハイライトするには | tsuchikazu blog"

ということで、現在アクセス数は少なくて悲しいけど、簡単にGoogle AnalyticsもRubyから使えて便利ですね。