
【解説】GoogleAnalyticsのリアルタイムデータログを取得する方法
Google Analyticsには「リアルタイム」というメニューがあります。 その名の通りいま現状サイトに訪問しているユーザーのデータを見られる機能ですが、それとは別にリアルタイムデータログを取る方法について今回は解説します。
今回の概要
今回は「分単位でのアクティブユーザーログをとる」ことができるようにしてみます。
具体的には、GoogleAppsScript(Googleが提供しているAPI)を利用して、Googleドキュメントのスプレッドシートにアクティブユーザー数を一定期間に取得してみよう、という内容です。
参考:Realtime API必要なものを揃える
事前に用意しておく必要のあるものは以下の2つだけです。
- Googleアカウント
- データを得る対象のAnalyticsを所有しているものに限ります。
- データを取得する対象のGoogleAnalyticsのビューID
- GoogleAnalyticsのアナリティクス設定>ビュー設定で確認出来る、8ケタの数字です。
当然ながら、取得できるのは上記のGoogleアカウントが所有しているデータに限定されます。 今回は、仮にビューIDを’01234567’とします。
データ取得前の準備
(1)Googleドキュメントのスプレッドシートを新規作成
(2)メニューからツール→スクリプトエディタを起動

(3)「スクリプトを作成」から「空のプロジェクト」を選択
(4)リソース→「Googleの拡張サービス」から必要なライブラリ―今回は「Analytics API」―を有効化

Google デベロッパーコンソールでも有効化します(重要)。
(5)スクリプトエディタにスクリプトを記述していきます。
データ出力をテスト
問題なく動作するか、まずはアクティブユーザー数を取得して出力してみます。 実行の際Analyticsへのアクセス許可を確認されるので、承認して実行しましょう。
function getRalTimeData() {
//ログを取得
Logger.log(Analytics.Data.Realtime.get('ga:01234567', 'rt:activeUsers').getRows());
//出力先のシートを指定
var sheet = SpreadsheetApp.getActiveSheet();
//出力
sheet.getRange(1, 1).setValue(Logger.getLog());
}
出力結果例:
A | |
1 | Fri Mar 13 00:00:00 PDT 2015 INFO: [[12345]] |
※アクティブユーザー数が12345人の場合
この状態だと後でグラフ化などしづらいですね。
加工しやすいデータ形式で出力する
今度は、日時とユーザーを別の列に出力してみます。
function getRalTimeData() {
//アクティブユーザー数を取得
var realTimeActiveUsers=Analytics.Data.Realtime.get('ga: 01234567', 'rt:activeUsers').getRows();
//現在の日時取得(JSTで)
var formattedDate = Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd'T'HH:mm:ss ");
//出力先のシートを指定
var sheet = SpreadsheetApp.getActiveSheet();
//出力
sheet.getRange(1, 1).setValue(formattedDate);
sheet.getRange(1, 2).setValue(realTimeActiveUsers);
}
出力結果例:
A | B | |
1 | 2015-03-13T00:00:00 | 12345 |
定期的にデータを取得する
時間別推移をグラフにも整形できるよう、これを定期実行してデータを取得します。 連続出力できるように出力先の行番号を変更します。
function getRalTimeData() {
//アクティブユーザー数を取得
var realTimeActiveUsers=Analytics.Data.Realtime.get('ga: 01234567', 'rt:activeUsers').getRows();
//現在の日時取得(JSTで)
var formattedDate = Utilities.formatDate(new Date(), "JST", " HH:mm:ss ");
//出力先のシートを指定
var sheet = SpreadsheetApp.getActiveSheet();
//最後に出力した行を取得
var lastRow = sheet.getLastRow();
//次の行に出力
sheet.getRange(lastRow+1, 1).setValue(formattedDate);
sheet.getRange(lastRow+1, 2).setValue(realTimeActiveUsers);
}
そして時計マークのアイコン「現在のプロジェクトのトリガー」から実行周期を設定します。

今回は定期実行したいので「時間主導型」「分タイマー」「1分ごと」に設定しました。
出力結果例:
A | B | |
1 | 00:00:00 | 12345 |
2 | 00:01:00 | 12346 |
3 | 00:02:00 | 12347 |
これでアクティブユーザー数の分単位の推移が見られるようになりました。 自分でサーバを用意しなくても定期実行されるのがありがたいですね。
※今回使用したID,アクティブユーザー数は架空のものです。
ちなみに当社は広告の「配信システム」という、平たく言えば”AdWordsのような広告の配信ネットワークを構築するためのシステム”を提供しています。 総合広告配信システム「admage®」 こういったシステムにご興味がございましたら、ぜひお問い合わせを!