こんにちは。
21年新卒のS.Hです。

サイト運営を手助けする解析ツールの一つに、Google Analyticsがあります。
私は業務で、このGoogle Analyticsを使ってレポート作成をしています。
ただ、今までわざわざGoogle Analyticsからエクスポートして、データをスプレッドシートにコピペして…という非常に手間のかかる方法で作成していました。
そこで、既存のレポート様式を使って、毎月自動集計するようにしてみました。
今回は、アドオンを使用せず、GASを用いてGoogle Analyticsのデータを毎月スプレッドシートに自動取得させる方法をご紹介します。


GASの基本については 実務で使えるGoogleAppsScript 入門編 でご紹介していますので、ぜひご覧ください。

<目次>
・Google Analyticsについて
・実装
・毎月自動取得するためのトリガーを登録
・おわりに

Google Analyticsについて

Google Analyticsは、Googleが提供しているアクセス解析ツールです。
サイト運営をする上でチェックしておきたい、ユーザー数やページごとのプレビュー数などを集計することができます。
Google Analyticsには、「指標」と「ディメンション」という項目があります。
ここでは、それぞれの説明と主な項目をご紹介します。

指標 訪問者数や時間、〇〇率など、集計した数値

・ページビュー:ユーザーがページを閲覧した回数
・セッション:ユーザーが訪問してからサイトを離脱するまでを1セッションとしたときの、訪問回数
・ユーザー:サイトを訪問したユーザー数
・直帰率:全体のセッションのうち、ユーザーが訪問したページだけを見て離脱した割合(1ページだけ見て離脱した割合)
・離脱率:ユーザーが訪問してからサイトを離脱したときに、そのページが最後の閲覧ページとなった割合


ディメンション 〇〇別で見るといった、分析する視点

・ランディングページ:ユーザーがサイト内で一番最初に訪問したページ
・参照元:ユーザーがどこから誘導されたか

取得サイトのビューID確認

まずはデータ取得したいサイトのビューIDを確認しましょう。
左下にある歯車マークから、Google Analyticsの管理画面を開きます。
アカウント-プロパティ-ビューの『ビュー設定』から、ビューIDを確認できます。

実装

今回は以下の設定でデータを取得します。

指標
・ページビュー数
・ページ別訪問
・平均ページ滞在時間
・閲覧開始数
・直帰率
・離脱率

ディメンション
・ページパス
・ページタイトル

表示方法
・ページビュー数
・上位50行

まずはレポートシートを用意します。
同じスプレッドシートに毎月シートを追加挿入したいので、テンプレートを作成し、そのシートをコピーして作成するようにしました。
画像のように、シート名は前月日付になるように設定します。

function createSheetName(){
  // 現在の日時を取得
  var date = new Date();
  date.setMonth(date.getMonth() - 1);
  // 日付を「YY年MM月」に整形
  var lastMonth = Utilities.formatDate(date,"JST", "yy/MM");
 
  return lastMonth; 
}

function getGoogleAnalyticsData() {

//コンテナバインド型で紐付いたスプレッドシートのアクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet();
// コピー元のシート(template)を取得
var sheetCopy = sheet.getSheetByName('template');
//新しいシートを追加挿入
var newSheet = sheet.insertSheet(createSheetName(), 0, {template: sheetCopy});

新しいシートを作成するには、GASで用意されている「insertSheetメソッド」を使います。
日付の表示形式を指定するときは、「Utilitiesクラス」の「formatDateメソッド」を使用します。
今回はYY/MM形式を指定しました。
引数は以下の通りです。

  • 第1引数(日付) = 日付が格納されている変数
  • 第2引数(タイムゾーン) = ‘JST’ (日本時間)
  • 第3引数(フォーマット) = 日付の表示形式を指定

次に、Google Analyticsのデータを取得します。

// 取得するサイトのビューID
var viewId = 'ga:'+'xxxxxxxxx(ビューIDを記載)';

// 取得する期間を設定(前月1ヶ月を指定)
var dt = new Date();// 現在の日付  
var fastLastMonth = new Date(dt.getFullYear(), dt.getMonth()-1, 1); 
var startDate = Utilities.formatDate(fastLastMonth,"JST", "yyyy-MM-dd");
var endLastMonth = new Date(dt.getFullYear(), dt.getMonth(), 0);
var endDate = Utilities.formatDate(endLastMonth,"JST", "yyyy-MM-dd");

// 指標データを設定する(ページビュー数・ページ別訪問・平均ページ滞在時間・閲覧開始数・直帰率・離脱率)
var metrics = "ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:entrances,ga:bounceRate,ga:exitRate";
// ディメンションを設定する(ページパス・ページタイトル)
var dimensions = "ga:pagePath,ga:pageTitle";
//表示順はページビュー順でソートする
var sortType = "-ga:pageviews";


// Google Analyticsのデータを取得する
var gaData = Analytics.Data.Ga.get(
viewId,  
startDate,
endDate,
metrics,
{
'dimensions': dimensions,
'sort': sortType,
'max-results': 50
}
).getRows();
//データをスプレッドシートに書き込む
newSheet.getRange("A2").setValue(startDate);
newSheet.getRange("B2").setValue(endDate);

newSheet.getRange(5, 1, gaData.length, gaData[0].length).setValues(gaData); 
}

Google AnalyticsAPIで用意されている「Analytics.data.ga.get()」メソッドを使って、Google Analyticsのデータを取得します。
取得するサイトのビューID、取得開始日と終了日と指標を設定します。
また、オプションでディメンションやフィルタ、ソートを追加することでさらに絞り込んだデータ取得も可能です。

ソートについて、昇順の場合は「ga:○○」、降順の場合は先頭に半角ハイフンをつけて「-ga:○○」と記述します。
また、フィルタリングをかけて指定のページのデータを取得することも可能です。

var filters= "ga:pagePath==/blog/xxxxx"; // 指定のページ

毎月自動取得するためのトリガーを登録

プログラムを毎月自動実行するためのトリガーを登録します。
左メニューの「トリガー」から、新しく「トリガーを追加」をクリックします。

「時間主導型」にし、毎月1日に自動実行するように設定しました。

おわりに

今回は、GASを用いてGoogle Analyticsのデータをスプレッドシートに自動集計する方法をご紹介しました。
Google Analyticsアドオンを用いてスプレッドシートに反映する方法もありますが、GASはさらにフィルタをかけた分析や、自由なデータ整形が可能です。
お読みいただきありがとうございました。

S.H
SD部 S.H
2021年新卒入社。お酒とお喋りが好きです。