Web

Google Analytics apiを使ってアクセス情報をスプレッドシートに表示する ~Google Analyticsのレポートを自動作成 その参~


こんにちは。広報担当の小林です。
今回の内容もGoogle Analyticsの統計レポートの自動作成手順の続きです。
 

  1. Google Apps Scriptを動かしてみる
  2. Google Apps Scriptでスプレッドシートのセルの値を取得・変更する
  3. Google Analytics apiを使ってアクセス情報をスプレッドシートに表示する
  4. Google Slides apiを使ってスライドの中身を書き換える

 
今回は③、Google Analytics apiを使用してGoogle Analytics(以下GA)のデータを取得します。
なお、本稿の Google Analytics api のバージョンはv3です。
 

Google Analytics apiを有効化

まずは準備として Google Analytics api を導入する必要があります。
スプレッドシートを作成してスクリプトエディタを開きましょう。
 
「リソース」の「Cloud Platformプロジェクト」を押して下さい。

 
プロジェクト名を入力して進むとこのようなダイアログが表示されますので、右下の「APIコンソールを表示」を押すと Google Cloud Platform に移動します。

 
Google Cloud Platform でAPIを有効化します。
作成したプロジェクトを選択して、メニューから「APIとサービス」のダッシュボードへ移動して「APIとサービスの有効化」で有効化したいAPIを選択してください。
今回は Analytics API を有効化します。

 
スプレッドのスクリプトエディタに戻ります。
「リソース」の「Googleの拡張サービス」で Google Analytics API をONにします。

 
これで準備完了です。
 

サンプルスクリプト

予め「SETTING」と「RESULT」シート、2つのシートを作成しておきます。

 
上の画像は「SETTING」シートです。
「SETTING」シートの入力値を取得して、それを条件にGAのデータを取得、それを「RESULT」シートに出力します。上のスプレッドシートの入力値を取得してGAのデータを取得します。
 
「SETTING」シートの内容は以下の通りです。

ViewID XXXXXXXX(GAのビューIDを入力)
start-date 2017/06/01
end-date 2018/06/30
metrics ga:users
dimensions ga:userGender
sort -ga:users
filters 無し

2017/6/1~2018/6/30のユーザの男女別の合計数を取得しています。
 
指定できるパラメータは他にもありますが、今回はその中からいくつか抜粋して使用しています。
各パラメータの説明は以下の通りです。

ViewID 取得したいGAのビューID
start-date 期間 開始日
end-date 期間 終了日
metrics 指標
PV数やセッションなど、グラフの横軸部分
dimensions ディメンション
ページタイトルや年月など、グラフの縦軸部分
sort 並び順
先頭に’-’を付けると降順
filters 結果の絞り込み条件

 
サンプルスクリプト

//起動時にメニューを追加
function onOpen(){
  //スプレッドシートのメニューに新たな項目を追加する
  SpreadsheetApp.getActive().addMenu(
    'Google Analytics',
    [
      {name: 'データを取得', functionName: 'getGaData'}
    ]
  );
}

//Google Analyticsのデータを取得
function getGaData(){
  var settingSheet = SpreadsheetApp.getActive().getSheetByName('SETTING');
  
  //セルの値を取得してパラメータを指定する
  var input_viewID     = settingSheet.getRange('B2').getValue();
  var input_startDate  = settingSheet.getRange('B3').getValue();
  var input_endDate    = settingSheet.getRange('B4').getValue();
  var input_metrics    = settingSheet.getRange('B5').getValue();
  var input_dimensions = settingSheet.getRange('B8').getValue();
  var input_sort       = settingSheet.getRange('B9').getValue();
  var input_filters    = settingSheet.getRange('B10').getValue();
  
  //optionを作成
  var options = {};
  if(input_dimensions !=='') options.dimensions = input_dimensions;
  if(input_sort !=='')       options.sort       = input_sort;
  if(input_filters !=='')    options.filters    = input_filters;
  
  //日付をフォーマットする
  var timeZone  = Session.getScriptTimeZone();
  var startDate = Utilities.formatDate(input_startDate, timeZone, 'yyyy-MM-dd');
  var endDate   = Utilities.formatDate(input_endDate,   timeZone, 'yyyy-MM-dd');
  
  var result = Analytics.Data.Ga.get(
    'ga:'+input_viewID, //ViewID
    startDate,          //データ取得期間 From
    endDate,            //データ取得期間 To
    input_metrics,      //マトリクス
    options             //条件
  ).rows;
  
  //RESULTシートに結果を表示する
  var resultSheet = SpreadsheetApp.getActive().getSheetByName('RESULT');
  
  //シートの値を削除
  resultSheet.clear();
  
  if(result.length){
    //1行目に項目名を挿入
    //配列を作成
    var head = [[]];
    if(input_dimensions){
      var dimensions = String(input_dimensions).split(',');
      for(var i=0; i<dimensions.length; i++){
        head[0].push(dimensions[i]);
      }
    }
    var metrics = String(input_metrics).split(',');
    for(var i=0; i<metrics.length; i++){
      head[0].push(metrics[i]);
    }
    
    //セルに挿入
    resultSheet.getRange(1, 1, 1, head[0].length).setValues(head);
    
    //2行目に結果を挿入
    resultSheet.getRange(2, 1, result.length, result[0].length).setValues(result);
  }
}

 
まずサンプルスクリプトの2行目の関数 onOpen ですが本稿の処理とは直接関係ありません。
スプレッドシートを開いた際にメニューの項目を追加しています。
ここで追加したメニューを押すと getGaData が実行されます。
では13行目以降の関数 getGaData を見て下さい。
 
流れを簡単に説明すると、
14~23行  「SETTING」シートのセルの値を取得
25~42行 上で取得した値から検索用のパラメータを作成、GAのデータを取得
44~70行 結果を「RESULT」シートに反映
という手順になります。
 
セルの値の取得と変更については前回の記事をご覧ください。
 

Google Analytics api で統計データを取得する

GAのデータ取得には Analytics.Data.Ga.get() メソッドを使用します。
 

Analytics.Data.Ga.get(viewID, start-date, end-date, metrics[, options])

 
まずパラメータの作成です。
セルから取得した値で指定する options オブジェクト作成します。

  //optionを作成
  var options = {};
  if(input_dimensions !=='') options.dimensions = input_dimensions;
  if(input_sort !=='')       options.sort       = input_sort;
  if(input_filters !=='')    options.filters    = input_filters;

 
start-date,end-date のセルの書式が日付になっている場合、取得した値はDateオブジェクトになっているはずなのでフォーマットします。

  //日付をフォーマットする
  var timeZone  = Session.getScriptTimeZone();
  var startDate = Utilities.formatDate(input_startDate, timeZone, 'yyyy-MM-dd');
  var endDate   = Utilities.formatDate(input_endDate,   timeZone, 'yyyy-MM-dd');

 
Analytics.Data.Ga.get() メソッドを使用してGAのデータを取得します。

  var result = Analytics.Data.Ga.get(
    'ga:'+input_viewID, //ViewID
    startDate,          //データ取得期間 From
    endDate,            //データ取得期間 To
    input_metrics,      //マトリクス
    options             //条件
  ).rows;

 
結果の二次元配列は rows に格納されているため、サンプルスクリプトでは直接変数 result に代入しています。
viewIDの前に ‘ga:’ を付けるのをお忘れなく。
 
後は結果をRESULTシートに反映して終了です。
結果は二次元配列になっています。
例えばディメンションを2つ、指標を3つ指定した場合は以下のような結果になります。
 
[
  [dimension1, dimension2, metrics1, metrics2, metrics3],
  [dimension1, dimension2, metrics1, metrics2, metrics3],
   ︙
]
 
サンプルスクリプトを実行するとRESULTシートに結果が表示されます。

 
以上で Google Analytics api の基本的な使い方は終了です。
次回は Google Slides api を使用してGoogleスライドの中身をいじっていきます。



関連リンク

各種お問合わせはこちらから!

採用に関するお問い合わせはこちらから!