情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでGoogle Analyticsのアクセス解析データを取得するには?

2016/04/17

Google Analyticsのアクセス解析データを取得するにはGoogle Analytics APIを呼び出さなければなりません。

Google Analytics APIを呼び出すにはga-analyticsパッケージのga-analyticsモジュールを利用します。

ただし、事前にGoogle Analyticsに結び付けられたGoogleサービスアカウントを作成しておく必要があります。

詳しい準備方法に関しては下の記事を参照してください。


gaAnalytics関数を使用します。

第1引数にリクエストパラメータをオブジェクトとして指定します。

主なパラメータには下のようなものがあります。

  • clientId・・・控えてあるはずの「サービスアカウント」を指定します。
  • serviceEmail・・・控えてあるはずの「メールアドレス」を指定します。
  • key・・・pemファイルのパスを指定します。
  • ids・・・控えてあるはずの「ビューID」の冒頭にga:を付加したものを指定します。
  • dimentions・・・取得するデータのディメンション(後述)を指定します。10個までのディメンションを指定することができます。それぞれのディメンションは,で区切ります。
  • metrics・・・取得するデータのメトリック(後述)を指定します。10個までのメトリックを指定することができます。それぞれのメトリックは,で区切ります。
  • startDate・・・データの集計を開始する日付をyyyy-MM-dd形式で指定します。
  • endDate・・・データの集計を終了する日付をyyyy-MM-dd形式で指定します。
  • filter・・・フィルタ(後述)です。
  • startIndex・・・何件目のデータから取得するかを指定します。
  • max・・・取得する最大件数を指定します。デフォルトは1000です。最大は1000です。
  • sort・・・データを並び替える方法です。ディメンションかメトリックで指定します。ディメンションかメトリックをそのまま指定すると昇順となり、先頭に-を付加して指定すると降順となります。

第2引数にコールバック関数を指定します。この関数の第1引数はエラーオブジェクトであり、第2引数はレスポンスオブジェクトです。

レスポンスオブジェクトの重要なプロパティには下のようなものがあります。

  • rows・・・ディメンション毎のデータが配列として格納されています。1つのディメンションのデータにはディメンションの値とメトリックの値が指定された順番で配列として格納されています。
  • totalResults・・・全てのデータの件数(取得した件数ではなく、取得し切れなかったデータも含む件数)です。
  • itemsPerPage・・・max件ずつ取得する場合に必要な取得回数です。つまり、Math.ceil(totalResult / max)です(たとえば、データが96件ある場合にmax9を指定した場合には全てのデータを取得するためには11回リクエストを行わなければならないので11となります)。
  • totalsForAllResults・・・メトリックの値の合計がオブジェクトとして格納されています。

データのメトリックとはデータの種類です。

主なメトリックには下のようなものがあります。

  • ga:users・・・ユニークユーザー。
  • ga:sessions・・・セッション。
  • ga:pageviews・・・ページビュー。
  • ga:pageviewsPerSession・・・セッション平均ページビュー。
  • ga:newUsers・・・新規ユーザー。
  • ga:percentNewSessions・・・新規ユーザー率。
  • ga:bounces・・・直帰数。
  • ga:bounceRate・・・直帰率。
  • ga:organicSearches・・・オーガニック検索のセッション。
  • ga:socialActivities・・・ソーシャルネットワークでシェアされた回数。
  • ga:avgTimeOnPage・・・平均滞在時間。

データのディメンションとはデータの区分方法です。

主なディメンションには下のようなものがあります。

  • ga:date・・・日。
  • ga:month・・・月。
  • ga:year・・・年。
  • ga:pagePath・・・ページのパス。
  • ga:pageTitle・・・ページのタイトル。
  • ga:source・・・参照元のホスト。
  • ga:keyword・・・キーワード。
  • ga:landingPagePath・・・ユーザーが一番最初にアクセスしたページのパス。

フィルタはメトリックまたはディメンションと演算子と値を使って指定します。また、複数の条件を指定することもできます。

たとえば、下のようにします。

  • ga:users<1000
  • ga:keyword==xxx;ga:newUsers>=10

複数の条件を指定する場合には,または;を使用します。,はORで;はANDです。

サンプルコード1

2016年2月の日毎のセッションとページビューを取得します。

ga-analytics-1.js

var gaAnalytics = require('ga-analytics');

var id = 'xxx';
var email = 'xxx';
var key = 'xxx.pem';
var viewId = 'xxx';

gaAnalytics({
    dimensions: 'ga:date', 
    metrics: 'ga:sessions, ga:pageviews', 
    clientId: id, 
    serviceEmail: email, 
    key: key, 
    ids: 'ga:' + viewId, 
    startDate: '2016-02-01', 
    endDate: '2016-02-29'
}, function (err, res) {
    if (err) {
        console.error(err);
        process.exit(1);
    }
    else {
        console.log(res.rows);
        console.log('total sessions: ' + res.totalsForAllResults['ga:sessions']);
        console.log('total pageviews: ' + res.totalsForAllResults['ga:pageviews']);
    }
});

使用パッケージ

  • ga-analytics
    npm install ga-analyticsでインストールします。

実行結果

xの部分には実際には数値が入っています。

C:\work\node>node ga-analytics-1.js
[ [ '20160201', 'x', 'x' ],
  [ '20160202', 'x', 'x' ],
  [ '20160203', 'x', 'x' ],
  [ '20160204', 'x', 'x' ],
  [ '20160205', 'x', 'x' ],
  [ '20160206', 'x', 'x' ],
  [ '20160207', 'x', 'x' ],
  [ '20160208', 'x', 'x' ],
  [ '20160209', 'x', 'x' ],
  [ '20160210', 'x', 'x' ],
  [ '20160211', 'x', 'x' ],
  [ '20160212', 'x', 'x' ],
  [ '20160213', 'x', 'x' ],
  [ '20160214', 'x', 'x' ],
  [ '20160215', 'x', 'x' ],
  [ '20160216', 'x', 'x' ],
  [ '20160217', 'x', 'x' ],
  [ '20160218', 'x', 'x' ],
  [ '20160219', 'x', 'x' ],
  [ '20160220', 'x', 'x' ],
  [ '20160221', 'x', 'x' ],
  [ '20160222', 'x', 'x' ],
  [ '20160223', 'x', 'x' ],
  [ '20160224', 'x', 'x' ],
  [ '20160225', 'x', 'x' ],
  [ '20160226', 'x', 'x' ],
  [ '20160227', 'x', 'x' ],
  [ '20160228', 'x', 'x' ],
  [ '20160229', 'x', 'x' ] ]
total sessions: x
total pageviews: x

サンプルコード2

2016年2月のページパスとパージタイトル毎のセッションを取得します。

ga-analytics-2.js

var gaAnalytics = require('ga-analytics');

var id = 'xxx';
var email = 'xxx';
var key = 'xxx.pem';
var viewId = 'xxx';

gaAnalytics({
    dimensions: 'ga:pagePath, ga:pageTitle', 
    metrics: 'ga:sessions', 
    clientId: id, 
    serviceEmail: email, 
    key: key, 
    ids: 'ga:' + viewId, 
    startDate: '2016-02-01', 
    endDate: '2016-02-29'
}, function (err, res) {
    if (err) {
        console.error(err);
        process.exit(1);
    }
    else {
        console.log(res.rows);
    }
});

使用パッケージ

  • ga-analytics
    npm install ga-analyticsでインストールします。

実行結果

xの部分には実際には数値が入っています。

C:\work\node>node ga-analytics-2.js
[ [ '/', '情報アイランド', 'x' ],
  [ '/category/未分類', 'ページが見つかりませんでした – 情報アイランド', 'x' ] ]

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js