今更ながらGoogleAnalyticsのリアルタイムデータを取得してみた

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

目下新米修行中のsです。
GoogleAnalyticsのリアルタイムデータログを取ろうとしてGoogle先生に訊いたらあんまり答えが返ってこなかった私のような方のために記載します。

【やること】

GoogleAnalyticsにはデフォルトでレポート出力機能がついています。
が。
今回やりたいことは、
「分単位でのアクティブユーザーログをとる」
です。

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

【必要なものを揃えてみた。】

少ないですのでサクッと用意します。

  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,アクティブユーザー数は架空のものです。




広告システムについてのお問い合わせやご相談、パッケージ製品の詳細はこちらからどうぞ。
http://admage.jp/
アプリ計測SDK admage for Appのお問い合わせ・詳細はこちら。
http://apptizer.jp/

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

コメントを残す

*