perlでGoogle AnalyticsのAPIをつかってみる
テストでGoogle Analyticsの値を取得したくなったんだけど、UIから取得するのは難しそうなので、APIを使ってみる事にした。
たいした記事ではないけれど自分への備忘録的に残す。
なお公式のドキュメントは↓
http://code.google.com/intl/ja/apis/analytics/docs/index.html
認証にはGoogle Analyticsのアカウントの情報を'https://www.google.com/accounts/ClientLogin'にPOSTしてやるとよいみたい。
アカウント情報は以下の4つ。(もっとあるのかもしれないが、とりあえずこれで動く)
- アカウントタイプ
- アカウントEmail
- アカウントパスワード
- サービス名
アカウントはGOOGLE、サービス名は'analytics'でいいみたい。
#account parameter my $email = <email>; #Emailを指定 my $password = <password>; #パスワードを指定 my $service = 'analytics'; my $auth_key_url = 'https://www.google.com/accounts/ClientLogin'; my $req = HTTP::Request::Common::POST( $auth_key_url, [ accountType => 'GOOGLE', Email => $email, Passwd => $password, service => $service, ] ); my $res = $ua->request($req);
認証が成功するとなんかいろいろ返ってくるけど、任意の値をGETするにはAuthの値を使う。
Auth=以降の値を抽出する。
if( $res->content =~ /Auth=([^\s]+)/ ){ $auth_key = $1; } else{ print "no match!\n"; exit(0); }
Authの値と任意のkey、パラメータでリクエストする。
リクエストのパラメータで必要なのは以下の4つ。なおこれ以外にもオプションで付けられる。
- プロファイルID
- メトリクスのキー
- 開始日
- 終了日
プロファイルのIDとは、Google Analyticsにログインした時のURLでpxxxxxxの部分だ。(pは除く)
#request parameter my $profile_id = <xxxxxxx>; #自分のプロファイルIDを指定 my $metrics = 'visits'; #任意の取りたい値。ここで指定しているvisitsは訪問者 my $start_date = $<start_date>; #$yyyy-mm-ddの型式で日付を指定。 my $end_date = $<end_date>; my $feed_url = "https://www.google.com/analytics/feeds/data?ids=ga:$profile_id&metrics=ga:$metrics&start-date=$start_date&end-date=$end_date"; $req = HTTP::Request::Common::GET( $feed_url, 'Authorization' => "GoogleLogin Auth=$auth_key" ); $res = $ua->request($req);
最後に返ってきた値をXML::Simpleとかでパースしてやる。
my $xs = new XML::Simple(); my $xs_ref = $xs->XMLin($res->content); $visitor = $xs_ref->{'dxp:aggregates'}->{'dxp:metric'}->{value};
これで訪問者数を取得する事が出来る。