hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

GoogleスプレットシートにGoogleアナリティクスのリアルタイムアクティブユーザー数を日別シートに書き出す

最近までちゃんとスプレットシートを活用してなかったのですが 、APIで呼び出しできるとアプリ同士で連携すると結構色々できて便利ですね。

まずはリアルタイムアクティブユーザーを取得するためのスプレットシートを作成します。  

メニューから ツール > スクリプトエディタ を選択
スクリプトエディタを立ち上げます。

メニューのリソース > Googleの拡張サービス を選択します。

以下のようにAnalyticsをONにしてその下のGoogleディベロッパーコンソールのリンクからAPIを有効にしておきます。
f:id:hotoolong:20170208013736p:plain

設定が完了したら空のスクリプト myFunctionがありますが、 以下のようにスクリプトを作成してみます。

view_idにはアナリティクスから取得します。
アナリティクスの管理 > ビュー設定にある ビューIDを設定します。

var view_id = 'xxxxxxxxx';

// 日付シートを取得なければ作る
function getSheet() {
  if (getSheet.cache) { return getSheet.cache; }
  var today = Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd");
  getSheet.cache = SpreadsheetApp.getActive().getSheetByName(today);
  if (!getSheet.cache) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.insertSheet(today, 0);
    getSheet.cache = ss.getSheetByName(today);
  }
  return getSheet.cache;
}

function myFunction() {
  var activeUserCount = Analytics.Data.Realtime.get('ga:' + view_id, 'rt:activeUsers').getRows() || 0;
  var yyyymmddhhmmss = Utilities.formatDate(new Date(), "JST", " yyyy/MM/dd HH:mm:ss ");
  var sheet = getSheet();
  var last = sheet.getLastRow();
  // 最後の行の次に出力
  sheet.getRange(last + 1, 1).setValue(yyyymmddhhmmss);
  sheet.getRange(last + 1, 2).setValue(activeUserCount);
}

次に関数を選択でmyFunctionを選択して▶ の実行ボタンを押します。
スプレットシートに戻って、日付、アクティブユーザー数が表示されていればOKです。
最後にトリガーの設定です。スクリプトエディタに戻ってもらって時計のマークの 現在のプロジェクトのトリガーからトリガーを設定します。
myFunctionを1分ごと実行するには以下のように設定すればOKです。 f:id:hotoolong:20170208015110p:plain

これで1分ごとのアクティブユーザー数を取得できます。
今回のスクリプトは1日ごとにシートを作る用になっているので日別の管理はやりやすいかと思います。
スクリプト自体はjsでできているのでファイル名を日から月などに変更することでいろいろ使いやすく加工することもできるので便利ですね。