GASでアナリティクスの数値をスプレッドシートに自動計測する方法【基礎編】

やすのり
こんにちは!「Tekito style」を運営しているやすのり(@98nasi_nori)です。普段は都内でWebディレクター/マーケターなどをしています。

日々Webメディアやブログの数値計測をしていると、

メディア運営者
毎日Googleアナリティクスの数値を計測するのが面倒くさい……。

と思う方は多いはず。なんとか計測を自動化して工数を圧縮したいところですよね。

Googleが提供しているGAS(Google Apps Script)とスプレッドシートを活用すれば、こうした悩みを解決できます(ある程度はアドオンでもできますが)。

今回はGASを使い、Googleアナリティクスで取得できる基本的な数値(PVやUU数、離脱率など)を自動計測する方法を初心者向けに紹介していきたいと思います。メディア運用者やブロガーの方は参考にしてみてくださいね。

※注意
※ 本記事はあくまでエンジニアではなく、プログラミング初心者のWebディレクターが書いている学習記録です。自分でつくりたいサービスや機能があったのと、少しでも開発についての理解を深め、普段のディレクションでもエンジニアさんとより密なコミュニケーションを取ることができればと思い、現在開発周りにもチャレンジしています。

内容に突っ込みどころはある場合は、ぜひご指摘してくれると幸いです。プログラミング初心者の方は一緒に頑張っていきましょう!

GAS(Google Analytics Script)とは?

GAS(Google Analytics Script)はGoogleが提供するプログラミング言語。

GASを活用できるとアナリティクスはもちろん、GoogleマップやGメールなど、Google提供の各種ツールと連携することができます。またSlackなど、ツール次第ですが外部ツールと連携も可能です。

JavaScriptがベースになっているので、書いたことがあればすんなり使うことができるはずです。ただ最新のECMAScript 6(ES6)の記法に対応していない感じなので、変数や関数などはそれ以前のバージョンでの記述をする必要があります。

「そもそもJavaScriptがまったくわからない……」

という方はドットインストールやProgateなど、プログラミング学習サービスを一周して基礎を確認しておきましょう。

とりあえず早く使いたい方は、下記で紹介するコードをコピペして使うこともできるので、ぜひ参考にしてみてくださいね。

GASの基本的な使い方

GASの使い方をざっと確認していきましょう。

1. スクリプトエディタを開く

スプレッドシート

Googleドライブにログインし、任意のスプレッドシートを作成します。続いて、作成したGoogle スプレッドシートのツール欄から、「スクリプトエディタ」をクリック。

すると別タブでスクリプトエディタが開きます。

2. 新規スクリプトファイルを作成

スプレッドシート

メニューのファイル欄から、「New」> 「スクリプトファイル」をクリック。

スプレッドシート

「test」などファイル名を指定して保存します。

3. Logを出力してみる

テストでログを出力してみましょう。

先程作成したファイルに、エディタ上に下記コードを記載します。

function Test() {
Logger.log('testでログを出力しています');
}

GAS スプレッドシート

実行したい「Test」関数を指定し、三角の再生ボタンをクリック。すると指定した関数が動作します。その後「表示」>「ログ」をクリックします。

GASのログ確認

すると、上記のようにログが正しく実行されていることを確認できます。

タスク内容とGASコードの全容

今回はサンプルとして、下記の基本的なGoogle AnalyticsのデータをGASを用いて取得していきます。

  • 日付(年、日、曜日)
  • PV数
  • セッション数
  • ユーザー数
  • 新規ユーザー数
  • 直帰率
  • 離脱率
  • 平均セッション時間
  • ページ/セッション
  • イベント回数

GASコードの全体像

下記が今回使うコードです。とりあえずこれをそのまま貼れば一応動作はします。

アナリティクスのデータを取得するにあたり、アナリティクスIDは別途ご自身のID名を記載する必要があります

function getGaDataPrevDay() {

//-------日時データの取得-----------
// 昨日の日付を取得する
var date = new Date();
date.setDate(date.getDate() - 1);

//年度を取得する
var year = date.getFullYear();

//曜日を取得する
var ary = ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'];
var weekDayNum = date.getDay();//曜日番号の取得
var weekDay = ary[weekDayNum] ;

//-------GAデータ-----------
// GAからデータを取得する関数の定義
function getGaData(startDate, endDate) {
var gaData = Analytics.Data.Ga.get(
'ga:※※※※※※※※※※', //アナリティクスで使っているID名を記載
startDate,
endDate,
'ga:pageviews, ga:sessions, ga:users, ga:newUsers,ga:bounceRate,ga:exitRate,ga:avgSessionDuration,ga:pageviewsPerSession, ga:totalEvents'
).rows;

return gaData;
}

// 戻り値(指定期間)を指定し、関数を実効
var gaData = getGaData('yesterday', 'yesterday');

//-------スプレッドシートへの書き込み-----------
// 書き込むシートを選択する
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadSheet.getSheetByName('Daily'); //集計するシートタブ名を指定

//最終行+1行目の取得
var lastRow = sheet.getLastRow()+1;
//最終行+1行目を追加
sheet.insertRows(lastRow);

//追加した行に書き込む
sheet.getRange(lastRow, 1).setValue(year);
sheet.getRange(lastRow, 2).setValue(date);
sheet.getRange(lastRow, 3).setValue(weekDay);
sheet.getRange(lastRow, 4).setValue(gaData[0][0]);
sheet.getRange(lastRow, 5).setValue(gaData[0][1]);
sheet.getRange(lastRow, 6).setValue(gaData[0][2]);
sheet.getRange(lastRow, 7).setValue(gaData[0][3]);
sheet.getRange(lastRow, 8).setValue(gaData[0][4] + "%\n");
sheet.getRange(lastRow, 9).setValue(gaData[0][5] + "%\n");
sheet.getRange(lastRow, 10).setValue(gaData[0][6]/60);
sheet.getRange(lastRow, 11).setValue(gaData[0][7]);
sheet.getRange(lastRow, 12).setValue(gaData[0][8]);

//-----セルのフォーマット指定-------
//日時データのフォーマット
var FormatDate = sheet.getRange("B:B").setNumberFormat("MM/DD");
//直帰率
//var FormatBounceRate = sheet.getRange("H:H").setNumberFormat("0.00%");
//滞在時間
var FormatDuration = sheet.getRange("J:J").setNumberFormat("#,##00.00");
//ページ/セッション
var FormatPageSession = sheet.getRange("K:K").setNumberFormat("#,##0.000");
}

データ自動集計の設定方法・手順まとめ

続いて、具体的な進め方を紹介します。

1. スプレッドシートに新規タブを作成

データの収集先として、スプレッドシートに「Daily」タブを新規で作成します。
※名称は何でもいいのですが、先に紹介したコード内で同じシート名を指定する必要があります。

2. 項目名称を記載しておく

アナリティクス集計項目

集計されたデータが何か判別できるように、下記の項目を事前にシート上に記載しておきましょう。

項目名はご自由に設定してみてくださいね。ただし順番を入れ替える場合は、コード上でも順番を入れ替える必要があるのでご注意を。コードが良くわからない方は、順番はとりあえず下記の通りに記載してください。

  • 曜日
  • PV
  • Session
  • UU
  • NewUU
  • 直帰率
  • 離脱率
  • Ave Session時間
  • Page/Session
  • 合計イベント数

3. GASコードをコピペする

スクリプトエディタ上で、新規スクリプトファイルを作成します。ファイル名は何度もOKです。

先程のGASコードをコピペし、保存しましょう。またアナリティクスのデータを取得するにあたり、アナリティクスのIDは各自変更しておいてください。

※「getGaData」関数内の変数「gaData」> ‘ga:※※※※※※※※※※’の欄。

4. 発火してみる

先程テストでやったように、三角の再生ボタンをクリックし、スクリプトファイルを動作させてみましょう。すると、スプレッドシート「Daily」上で、各種アナリティクス数値が集計できているはずです。

5. 自動集計する設定をしてみよう!

このままだと自動でデータ集計はしてくれないので、毎日自動で実行されるように別途設定する必要があります

まずスクリプトエディタのメニューから「編集」をクリックし、「現在のプロジェクトのトリガー」を選択します。

G Suite Developer Hub

「G Suite Developer Hub」のページが開くので、画面右下にある「トリガーを追加」をクリックします。

G Suite Developer Hub

下記のように任意の設定をし保存します。すると、指定した時間やタイミングでデータを自動集計してくれるようになります。

・実行する関数を選択
→ 今回作成した関数を指定

・デプロイ時に実行
→ Head

・イベントのソースを選択
→ 時間主導型

・時間ベースのトリガーのタイプを選択
→ 日付ベースのタイマー

・時刻を選択
→ 集計する任意の時間を設定。今回は前日のデータを集計するので、日付が変わったAM1時あたりを設定しておきます。

GASコードの参考メモ

今回のコードを作成するにあたり、調べつつ気になった箇所をメモ程度ですが残しておきます。

曜日指定について

曜日を取得する場合は数値で返ってくる(日曜日は0など)ので、以下のスクリプトで数値を曜日名に変更しています。

//曜日を取得する
var ary = ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'];
var weekDayNum = date.getDay();//曜日番号の取得
var weekDay = ary[weekDayNum] ;
※参考
getFullYear() //年
getMonth() //月(値:0~11 = 1月~12月)
getDate() //日
getDay() //曜日(値:0~6 = 日曜日~土曜日)
getHours() //時
getMinutes() //分
getSeconds() //秒

アナリティクスのデータ取得

Analytics.Data.Ga.get().rows

こちらを使うと、簡単にアナリティクスにアクセスができます。最後に「.rows」とつなげることで、データ項目を取得します。

Analytics.Data.Ga.get(
‘gaのID',
startDate,
endDate,
'取得項目'
).rows;

PV(ga:pageviews)、新規ユーザー数(ga:newUsers)など、データの取得項目の指定名称については、下記のサイトで確認することができるのでぜひチェックしてみてくださいね。
Query Explorer

GAデータ取得後のスプレッドシートへの記載

1. 現在のスプレッドシートを選択

var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

2. スプレッドシートのさらに「Daily」シートを取得

var sheet = spreadSheet.getSheetByName('Daily');

3. 最終行の取得
シートに新規データを書き込む時は、一番下の空白行にデータを記載したいですよね。

下記だと、最終行(データが記述されている一番下の行)を取得します。

var lastRow = sheet.getLastRow();

しかしこのままだとデータを上書きしてしまうので、最終行に新規空白行を1行追加して、そこに数値を更新するようにします。

var lastRow = sheet.getLastRow()+1;

まとめ

ここまでGAS(Google Apps Script)を使って、基本的なアナリティクスのデータを自動取得してみましたが、いかがでしたでしょうか。僕は今回はじめてGASを使ってみましたが、普段の業務効率化をいろいろできそうなので、もっと勉強していきたいところ。

毎日数値を更新するとなると、なかなか面倒くださいのでぜひ活用してみてくだいね。難しかったらアナリティクスのアドオンを使ってみると良いでしょう。

またコピペするのもよいですが、実際にGASコードをいじってみて、それぞれの挙動をチェックしてみると理解を深められるかなと思います。セルのフォーマット指定など、今回のコードではいまひとつ効率的にできていない箇所もあるので、ぜひ各自ブラッシュアップいただけると幸いです。

それでは!




ABOUT US

都内で働くWebディレクター/マーケター(@98nasi_nori )。ときどき旅人な91年生まれ。早稲田大学卒。主にWebプロダクトのUI/UX改善の企画・ディレクションやSEO対策、トイレ掃除などしてます。もともとWebライター・編集者。開発やデザインも細々と勉強中……。学生時代は1年間の世界一周経験あり(過去約40ヶ国訪問)。お気に入りの国はベトナム、モロッコなど。好物は家系ラーメンとタピオカ。

こんな人が書いてるYO↓