F.Ko-Jiの「一秒後は未来」

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 エラーになる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など