Google AnalyticsのデータをGoogle スプレッドシートに書き写し、自分たちで利用しやすいように加工して使うケースも少なくないと思います。毎日必要なデータをGoogle Analyticsを開いて手動で書き写すのはとても面倒でコストがかかりますね。Google AnalyticsにはCore Reporting APIと呼ばれるAPIが公開されていて、それを使えばデータを取得することが出来ます。
Googleスプレッドシートを使っているのであればGoogle Apps Scriptを使うことでJavascriptの実装と同じ用にプログラムを記述することが出来ます。
この記事ではGoogle Apps Scriptを使い、Google AnalyticsのCore Reporting APIを叩いてGoogleスプレッドシートに自動で日々の検索流入のデータを記録する方法を紹介します。
今回もサンプルシートを用意してますので、こちらをコピーして使っていただいて結構です。
目次
下準備
Core Reporting APIを使えるようにする
Google Analyticsから自動でデータを取得するには、Core Reporting APIが使えるようになる必要があります。下記に従って実行していってください。
ツール -> スクリプトエディタを開きます
Googleの拡張サービスを有効にする
リソース -> Googleの拡張サービスを開きます
Google Analytics APIをONにします。
DevelopersプロジェクトでAnalytics APIを有効にする
サンプルシートをコピーした人はこの作業を忘れずに実行してください。実行しないと使えないです。
リソース -> Developersプロジェクトを選択
このスクリプトが現在関連付けされているプロジェクトの下にあるリンクをクリック
検索窓にAnalyticsと入力
有効にするをクリック
これでCore Reporting APIが使えるようになりました。
Google Core APIコードの実装
Google Core APIからデータを取得するコードはこちらです。
1 2 3 4 5 6 7 |
var ga_data = Analytics.Data.Ga.get( ga_view_id, start_date, end_date, metrics, options ).getRows(); |
パラメータについて少し解説します。各パラメータはQueryExprolerを使って確認することが出来ます。
ga_view_id
こちらは、Google Analyticsのどのビューからデータを取得するかです。
QueryExprolerを使ってIDを取得してください。
私の場合ですとidsにかかれている「ga:123456」がview_idになります。サンプルシートを実行する場合GASettingタブのB3セルに入力してください。
start_date、end_date
開始日と終了日です。
metrics
取得したいデータを指定します。
Googleアナリティクスで普段利用している指標(セッションやページビュー数など)を対応するコマンド分に入れ替えて、このセルに指定します。”,”カンマで区切って複数入れられます(最大128文字)
web担より引用
サンプルではga:sessions(セッション時間)、ga:avgTimeOnPage(平均滞在時間)、ga:bounceRate(直帰率)を指定してます。指定した順番で配列に格納されます。
options
オプションです。セグメントやサンプリングレベル、並び替え方法などの条件を追加出来ます。
以下のように指定します。
サンプリングレベルの指定です。「DEFAULT」、「FASTER」、「HIGHER_PRECISION」の3つの値があります。HIGHER_PRECISIONを指定すると精度を優先できます。
1 |
options['samplingLevel'] = "HIGHER_PRECISION"; |
セグメントの指定です。-5は検索流入のセグメントです。独自のセグメントを指定することも可能です。
1 |
options['segment']="gaid::-5" |
Google Core APIで取得したデータをスプレッドシートに書き込む
ここからはGoogle Apps Scriptの使い方になります。細かい説明は割愛させていただきます。
先程取得した
1 2 3 4 5 6 7 |
var ga_data = Analytics.Data.Ga.get( ga_view_id, start_date, end_date, metrics, options ).getRows(); |
ga_dataにはmetricsで指定した順番でデータが格納されています。
1 2 3 4 5 |
// ga_dataが存在していて、1件以上あるか確認する if(ga_data && ga_data.length >= 1){ var range = sheet.getRange(position, raw, ga_data.length, ga_data[0].length); range.setValues(ga_data); } |
var range = sheet.getRange(position, raw, ga_data.length, ga_data[0].length);
データを記録する範囲を指定します。
position=3,raw=4,ga_data.length=1,ga_data[0].length=3
の場合、D3:F3が指定されている状態になります。
range.setValues(ga_data);
指定した範囲にデータを書き込みます。
データ取得を自動化する
Google AnalyticsのAPIをたたいてデータを取得する関数が実装できたので、あとは指定した時間に定期的に実行出来るように設定します。
スクリプトエディタの時計ボタンをクリックします。
「トリガーが追加されていません。今すぐ追加するにはここをクリックしてください」をクリックします
定期的に実行したい処理を選択します。サンプルでは検索流入を取ってくる「getData」の処理を定期実行させたいと思います。図のように指定することで毎日午前8-9時の間に検索流入のデータが自動的に更新されます。私のサイトは検索流入が低すぎて目も当てられないですね。。。
以上でGoogle Analyticsのデータを自動的にGoogleスプレッドシートにレポーティング仕組みが完成しました。metricsやsegmentを工夫すると検索ワードを取得できるようになったり、ランディングページを取得出来るようになります。Androidアプリの新規インストール数取得もできます。別途記事で紹介します。
基本的にはサンプルシートをコピーして実際に使ってもらうのが早いと思いますので、ぜひご活用ください。
参考サイト)GoogleAppsScriptでGoogleAnalyticsのAPIを利用
参考サイト)Googleアナリティクスの面倒なレポート作成をGoogleスプレッドシートで解消! (第1回)