【解説】GoogleAnalyticsのリアルタイムデータログを取得する方法

2018年2月9日


Google Analyticsには「リアルタイム」というメニューがあります。
その名の通りいま現状サイトに訪問しているユーザーのデータを見られる機能ですが、それとは別にリアルタイムデータログを取る方法について今回は解説します。


今回の概要

今回は「分単位でのアクティブユーザーログをとる」ことができるようにしてみます。


具体的には、GoogleAppsScript(Googleが提供しているAPI)を利用して、Googleドキュメントのスプレッドシートにアクティブユーザー数を一定期間に取得してみよう、という内容です。
参考:Realtime API



必要なものを揃える

事前に用意しておく必要のあるものは以下の2つだけです。


  1. Googleアカウント
  2. データを得る対象のAnalyticsを所有しているものに限ります。

  3. データを取得する対象のGoogleAnalyticsのビューID
  4. GoogleAnalyticsのアナリティクス設定>ビュー設定で確認出来る、8ケタの数字です。


当然ながら、取得できるのは上記のGoogleアカウントが所有しているデータに限定されます。
今回は、仮にビューIDを’01234567’とします。


データ取得前の準備

(1)Googleドキュメントのスプレッドシートを新規作成します。
(2)メニューからツール→スクリプトエディタを起動します。

メニューからツール→スクリプトエディタを起動します。

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



リソース→「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ロゴ

こういったシステムにご興味がございましたら、ぜひお問い合わせを!

広告代理店・webメディア向けパッケージ型広告配信システム「admage®」

株式会社ディマージシェアは広告の配信システムを開発して10年以上のエンジニア集団。 定額・初期費用なしで導入できるパッケージ型の広告配信システム「admage®」を開発・提供しています。 フルスクラッチ開発、既存システムのリプレイスもお気軽にご相談ください!
admageへのリンク