Google Analytics APIのJavaScriptライブラリを使ってみた(データ取得編)
(追記) この記事の内容は古くなっているため動作しません。
まだやる気が残っているうちに続けてみる。Google Analytics APIのJavaScriptライブラリの使い方。前回は準備/認証周りをざっと説明したので、今回はデータの取得をしてみる。
JavaScriptライブラリのリファレンスは以下。
http://code.google.com/intl/ja/apis/gdata/jsdoc/1.9/index.html
http://code.google.com/intl/ja/apis/gdata/jsdoc/1.9/google/gdata/analytics.html
ちなみにGoogleから提供されているAPIの多くがGDataというプロトコルにのっとって提供されている。GDataというのはAtomPubの仕様にGoogle独自の仕様が追加されたもので、さらにデータフィードはRSS2.0とAtom1.0の形式がサポートされているはず。
プロファイルの取得
では、すでにログインされているものとして、早速アカウントのフィードからプロファイルを取得してみる。基本的にドキュメントにあったサンプルコードを参考にしている。
var service = new google.gdata.analytics.AnalyticsService('sample'); var scope = 'https://www.google.com/analytics/feeds'; function getAccountFeed() { var accountFeedUri = scope + '/accounts/default'; var service.getAccountFeed(accountFeedUri, listProfiles, handleError); }
getAccountFeedメソッドの引数には以下の3つを与えることができる。
- アカウントフィードのURI
- レスポンスを処理するコールバック関数
- エラー処理をするコールバック関数関数(任意)
前回紹介した Google Analytics API サンプル ではプロファイル名の一覧と、プロファイルIDを取得している。プロファイル名とプロファイルIDは以下のようにすれば取得できる。
function listProfiles(resultFeedRoot) { var entries = resultFeedRoot.feed.entry; for (var i = 0; i < entries.length; i++) { // プロファイルID var profileId = entries[i].getPropertyValue('ga:profileId'); // プロファイル名 var profileTitle = entries[i].getTitle().getText(); } }
その他、アカウントフィードから取得できるデータについては以下を参照のこと。
http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataReference.html#accountFeed
プロファイルは最大1,000件まで取得できる。1,000件以上のプロファイルが存在する場合は、アカウントフィードのURIにパラメータをつけてリクエストすること。そのあたりはGDataのドキュメントを参照するとよい。
データの取得
プロファイルIDを取得できれば、そのプロファイルのAnalyticsデータを取得することができる。基本的に Google Analytics で閲覧可能なデータはすべて取得できるので、パラメータの組み合わせは膨大な組み合わせになる。おそらく一冊解説本が書けるくらいある。なのでそのあたりはドキュメントを参照すべし。
ここでは Google Analytics API サンプル でやっているように、「コンテンツのタイトルをページビューの多い順に取得する」ということをやってみる。
function getReportData(profileId) { var dataFeedUri = [ scope, '/data?ids=ga:', profileId, '&dimensions=ga:pageTitle', '&metrics=ga:pageviews', '&sort=-ga:pageviews', '&start-date=2009-04-22', '&end-date=2009-04-22', '&max-results=10' ].join(''); service.getDataFeed(dataFeedUri, handleDataFeed, handleError); }
上記関数では、引数で指定されたプロファイルIDのデータを取得する。getDataFeedメソッドの引数については先ほどのgetAccountFeedと同様なので説明は割愛。
上の例ではリクエストするURIに、ids, dimensions, metrics, sort, start-date, end-date, max-results という7個のパラメータをつけている。dimensions というのは「ブラウザ」や「キーワード」や「ページタイトル」といった項目のこと。dimension で指定した項目について、 metrics で指定するデータを取得できる。
たとえば上記のように dimensions=ga:pageTitle, metrics=ga:pageviews とすれば、ページタイトルごとのページビューを取得できる。dimensions と metrics については Dimensions & Metrics Reference – Google Analytics – Google Code を参照のこと。dimensions, metrics とも複数指定することもできる。(ただし組み合わせの制限あり。)
sort は文字通りソート。値の前にハイフンをつければ降順ソートになる。start-date と end-date はデータ取得期間を指定できる。月日が1桁の場合は0詰めする必要がある。
データフィードのレスポンスを処理する関数はたとえば以下のように書ける。
function handleDataFeed(dataResultFeedRoot) { var feed = dataResultFeedRoot.feed; var entries = feed.entry; for (var i = 0; i < entries.length; i++) { var entry = entries[i]; var dimensions = entry.getDimensions(); var metrics = entry.getMetrics(); for (var j = 0; j < dimensions.length; j++) { // ページタイトル var pageTitle = dimensions[j].getValue(); // ページビュー var pageView = metrics[j].getValue(); } } }
getDimensions() や getMetrics() のようなメソッドを使って簡単にデータを取り出すことができるのが、ライブラリを利用する利点。ちなみに取得データに日本語が入っている場合にはHTMLの charset を UTF-8 にしておかないと、文字化けで JavaScript エラーになる。
コメントを残す