イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!


このエントリーをはてなブックマークに追加

Google Apps Scriptを使ってGoogle Analyticsのデータを取り込んでみる

弊社イノベーションのエンジニアブログも第3弾となりました。

こんにちは。
Dockerの実験のために、NUCを4台も買ってしまった加藤と 申します。
メモリ合計48GB、4台で1000円/月ぐらいの電気代で運用出来てます。
なので、お得感あります。後悔はしていませ・・・んんん!

1.gif

今回はDockerの話ではなく、
「Google Apps Scriptを使ってGoogle Analytics(以下GA)のデータをスプレッドシートに取り込んでみる」
という軽めな題材で行きます!

目標

今回の目標は、

  • Google Apps Scriptで、GAのデータをスプレッドシートに取り込めるようにする

です。

1.環境用意

新規にスプレッドシートを用意して、シート名を「GAデータ」としておきます。
これがないと始まらない!

2.GAデータの取得条件を用意

GAデータの取得条件を後から変更できるよう、下記の様な項目を用意します。

1〜9行目のB列

GAの取得条件

12行目〜

取得したGAデータが入る場所

取得条件は、Googleが用意している「Query Explorer」で確認すると便利です。
https://ga-dev-tools.appspot.com/query-explorer/

2.gif

3.Google Apps Script編集画面を表示

スプレッドシートのメニューから「スクリプトエディタ」を選択すると、Google Apps Script編集画面が開きます。

3.gif

4.Analytics APIを有効化を有効にする

Google Apps Scriptエディタのメニューから、
「Developers Console プロジェクト」を選択し、Analyticsライブラリを有効にします。

4.gif

また、「Google デベロッパーコンソール」でも有効になっていることを確認しておきます。

5.gif

5.Google Apps Script を編集

下記のスクリプトをコピペっ!して、
GAのデータ構造とスプレッドシートのデータ構造が一致しているとかGoogleのAPIは良く出来てるな〜と感心しながら、
Ctrl+Sで保存します。

Google Apps Scriptは、みんさんお馴染みのjavascriptです。

/**
 * GAのデータを取得する
 */
function updateGaData(){
  //シート名「GAデータ」を取得
  var sheet = SpreadsheetApp.getActive().getSheetByName('GAデータ');

  //各パラメータをスプレッドシートから取得
  var start_date    = sheet.getRange('B1').getValue();
  var end_date      = sheet.getRange('B2').getValue();
  var ga_view_id    = sheet.getRange('B4').getValue();
  var metrics       = sheet.getRange('B5').getValue();
  var dimensions    = sheet.getRange('B6').getValue();
  var filters       = sheet.getRange('B7').getValue();
  var sort          = sheet.getRange('B8').getValue();
  var samplingLevel = sheet.getRange('B9').getValue();

  var options = {};
  if(dimensions != '')   { options['dimensions']    = dimensions;}
  if(filters != '')      { options['filters']       = filters;}
  if(sort != '')         { options['sort']          = sort;}
  if(samplingLevel != ''){ options['samplingLevel'] = samplingLevel;}

  //Google Analyticsからデータを取得
  var ga_data = Analytics.Data.Ga.get(
    ga_view_id,
    Utilities.formatDate(start_date, Session.getScriptTimeZone(),'yyyy-MM-dd'),
    Utilities.formatDate(end_date,   Session.getScriptTimeZone(),'yyyy-MM-dd'),
    metrics,
    options
  ).getRows();

  //A13(13,1)を起点に、既存のデータを削除
  sheet.getRange(13, 1, 100, 4).setValue('');

  //データが1件以上取得できていた場合、A13(13,1)を起点に、Google Analyticsから取得したデータを上書き
  //Analyticsのデータをそのまま使える!
  if(ga_data && ga_data.length >= 1){
    var range = sheet.getRange(13, 1, ga_data.length, ga_data[0].length);
    range.setValues(ga_data);
  }
}


/**
 * スプレッドシートを開いた際に実行
 * - 「GAデータ更新」メニューを追加
 */
function onOpen() {
  SpreadsheetApp.getActive().addMenu('Analytics接続', [
    {name: 'GAデータ更新', functionName: 'updateGaData'}
  ]);
}

6.トリガ設定

スプレッドシートを開いた時にメニューが追加されるよう、トリガを設定します。
「現在のプロジェクトのトリガー」で、スプレッドシート起動時に、onOpenが実行されるようにします。

6.gif
7.gif

7.試してみよう

スプレッドシートに戻って、ページのリロードをすると、メニューに「Analytics接続」が追加されます。
そこから「GAデータ更新」選択すると、GAのデータがスプレッドシートに反映されます。

あとは、このデータを好きなように加工すればOKです。

8.まとめ

Google Apps Scriptを使うと、GAから簡単にデータを取得することが出来ました。

プログラムも非常にシンプルですし、Googleのインフラ上で動作するので環境構築も不要なので、「誰でも出来そう!」って感じて頂ければ幸いです。

ちなみに、この方法を弊社のマーケティングチームに話してみたところ、
30分後には、自力でGAからデータを取得して、簡単なKPIをつくって、自動更新できるようになっていました。

「やりたい事があるのに、開発リソースが足りない!!!」

という悩みをお持ちを企業様は多いと思います。
弊社も、まだまだエンジニアの数が少なく、社内や社外からの要望に対応しきれていない状態です。

なので、
今回の様な簡単なツールであれば自分たちで作れるようになってもらったり、
プログラムを触ってもらって開発者が何をやっているのか理解してもらったり、
少しずつ社内の人たちを巻き込んで行くことで、
エンジニアはより良い環境で、より多くの時間を開発に割くことが出来き、ハッピーになるのではないかなーと考えています。