2015年7月3日金曜日

Google AnalyticsのデータをGoogle Apps Scriptを使ってSpreadsheetに出力する

はじめに

こんにちは、井下です。

本ブログでは過去に数回、Google AnalyticsとGoogle Apps Scriptの連携について触れていますが、顧みてみると実装方法についてあまり説明していませんでした。そこで、今回はGoogle AnalyticsとGoogle Apps Scriptの連携させる際の実装方法について、具体的なコードを交えて説明していきます。

また、初歩的な手順についても説明していきますので、Google Analyticsを使ってるけど、Google Apps Scriptって難しそうで分からない、という方もご参考ください。

ちなみに…。
Google AnalyticsとGoogle Apps Scriptの連携させる意義ですが、大きく2つあると考えています。

  1. 定期的にデータを出力させることで、計測したいデータの推移をすぐ見られるようにする
  2. 3つ以上のディメンションを組み合わせたデータを分析したい

1つ目は計測したいデータが決まっていて、なおかつ分析手法も確立されている状態で、データだけ定期的に欲しいというパターンですね。手動でもデータを取ることはできますが、決まりきったデータの取得はやはり自動化したいものです。

2つ目はGoogle Analyticsの仕様が絡んでくるお話です。
Google Analyticsを利用している方はご存じだと思いますが、Google Analyticsはメインとなっている指標(プライマリディメンション)に、もう一つの指標(セカンダリディメンション)を絡めて、細分化したデータを見ることができるようになっています。

例えば、下図はプライマリディメンションに"キーワード"(オーガニック検索キーワード)、セカンダリディメンションに"地域"を選択しています。つまり、ブラウザからの検索キーワードごとに、どの地域(日本であれば都道府県レベル)からの参照が多いのかが分かるデータが表示されています。

では、さらにどんなユーザが参照しているのかの手がかりとして、"ネットワークドメイン"を指標として細分化したデータが見たくなります。が…。

Google Analyticsの画面からでは、セカンダリディメンション以降のディメンションを設定してデータを細分化することができません。(2015年7月時点)
この仕様は詳細な分析をしたい人にとって、意外と大きい落とし穴になっているのではないでしょうか?

ただし、その仕様はあくまで画面上からの操作に限られるようで、実はGoogle AnalyticsとGoogle Apps Scriptを連携させることで、3つ以上のディメンションを組み合わせたデータを出力させることができます。
セカンダリディメンションまでだと、分析し足りない!と考えている方は、Google Apps Scriptを学ぶ価値が大いにあるということです。


以降は実際にGoogle AnalyticsとGoogle Apps Scriptを連携させる手順について説明します。
以前も書いた内容&前提の準備が含まれていますので、ご存知の方はページ中段までお進みください。

手順は以降の順に説明していきます。

Google Apps Scriptを使う準備
Google Apps ScriptからGoogle Analyticsを使う準備
Google AnalyticsのデータをGoogle Apps Scriptで取得する

Google Apps Scriptを使う準備


まずはGoogle Apps Sctiptを使う準備をします。
Google Apps Scriptを使うには、主に2つの方法があります。

  1. SpreadsheetなどのGoogleのサービスから、Google Apps Scriptのプロジェクトを開く
  2. Googleドライブから直接Google Apps Scriptのプロジェクトを作成する

2の手順は少し設定が必要ですので、今回は手軽に触れられる1の手順で進めていきます。

まず、Spreadsheetを新規作成し、[ツール]>[スクリプト エディタ]を選択します。
次のような画面とダイアログが開きます。特にダイアログで必要な操作はないので、[閉じる]を選択します。


これでGoogle Apps Scriptを使う準備が整いました。
次はGoogle Apps ScriptからGoogle Analyticsを使う準備をします。

Google Apps ScriptからGoogle Analyticsを使う準備

Google Apps Scriptは最初からGoogle Analyticsのデータを取得できる状態になっていません。そのために幾つかの準備をします。
まず、Google Apps Scriptの画面から、[リソース]>[Googleの拡張サービス]を選択します。

プロジェクト名を決定していないと、プロジェクト名を入力を促すダイアログが表示されます。
任意の入力で構いませんが、ここでは"Analytics"と入力しました。入力した後にOKを選択します。

Googleの拡張サービスの有効/無効の設定画面が表示されます。ここで"Google Analytics API"を選択し、有効な状態にします。
何故か表示が崩れてしまっていますが、ボタンらしき部分が緑色になっていれば有効にできています。(ちなみにブラウザはChromeです)
さらに画面に表示されているメッセージ通り、"Google デベロッパーコンソール"からも"Google Analytics API"を有効にします。
難しい話に聞こえますが、手順は簡単です。

メッセージの"Google デベロッパーコンソール"がリンクになっているので、リンク先を開きます。

リンク先の検索窓に"Analytics"と入力します。
表示されるAPIが絞り込まれます。
絞り込まれたAPIから、"Analytics API"を選択します。
APIの有効/無効の切り替え画面が表示されるので、有効にします。

ここまでの手順が終わったら、"Google デベロッパーコンソール"にはもう設定は必要ないので、画面を閉じます。
Google Apps ScriptのGoogleの拡張サービスの有効/無効の設定画面もOKを選択して閉じます。


これでGoogle Apps ScriptからGoogle Analyticsを使う準備が整いました。

確認のため、Google Apps Scriptの画面の2行目に"A"を入力した後、"Ctrlキー" + "Spaceキー"を押してみましょう。
準備内容に漏れがなければ、入力補完として"Analytics"と表示されます。

Google AnalyticsのデータをGoogle Apps Scriptで取得する

Google Apps Scriptから、Google Analyticsのデータを取得する準備は整いましたが、実際にどんなデータを取得するのかを、コードとして書き起こさなくてはなりません。

Google Analyticsのデータを取得するにあたり、ユーザがコードに書き起こす内容は下記の通りです。

  1. データ取得の対象となるプロファイル
  2. データ取得の範囲を決めるディメンション
  3. データ取得の値を決めるメトリクス
  4. データ取得の範囲を決める対象日付(開始・終了)

馴染みのない単語もあると思いますので、1つずつ説明していきます。

データ取得の対象となるプロファイル

Google Analyticsのプロファイルと言われて、すぐに何のことか分かる人は少数派でしょうが、実はGoogle Analyticsを利用するうえで、必ず作成しています。

Google Analyticsのホーム画面を開くと、通常下図のように表示されます。
この画面の"すべてのウェブサイトのデータ"がプロファイルにあたります。ちなみに"A-AUTO 50開発者ブログ"にあたる部分がプロパティ、その上位の部分がアカウントと呼ばれています。

コードに書き起こすのに必要な情報は、このプロファイルのIDです。プロファイルのIDは対象としたいプロファイルのレポートを開いた状態のURLに記載されています。

例えばGoogle Analyticsからユーザのサマリー画面を開き、URLからプロファイルのIDを確認してみましょう。

URLの中に、下記のような箇所があるはずです。
report/visitors-overview/axxxxxxxxwyyyyyyyypzzzzzzzz/

このうち、"p"と"/"に囲まれた箇所が、プロファイルのIDになります。
上記のようになっていればプロファイルのIDは"zzzzzzzz"です。

データ取得の範囲を決めるディメンション

ディメンションはプライマリディメンションやセカンダリディメンションと言われているように、どのようにデータを振り分けるかの指標を指しています。
先に出した例で言えば、キーワードや地域、ネットワークドメインといったものですね。

ディメンションごとに指定方法が決まっているので、下記のリンク先から確認してみてください。

Googleの公式リファレンス
https://developers.google.com/analytics/devguides/reporting/core/dimsmets

Googleの公式リファレンス日本語訳(非公式かつ一部のみ)
http://tuono034s.com/web-entry/128/

例として、キーワードは"ga:keyword"、地域は"ga:region"、ネットワークドメインは"ga:networkDomain"を指定します。

データ取得の値を決めるメトリクス

メトリクスは"どんな値を取るのか"を指定します。例を挙げるなら、セッションや新規セッション率、直帰率などが挙げられます。

指定方法はディメンションと同ページに記載されていますので、そちらをご確認ください。

今回は例として、セッション、新規セッション率、新規ユーザーをメトリクスにするとして、それぞれセッションは"ga:sessions"、新規セッション率は"ga:percentNewSessions"、新規ユーザーは"ga:newVisits"を指定します。

データ取得の範囲を決める対象日付(開始・終了)

最後はいつからいつまでのデータを対象にするのかを選択します。
指定方法は、yyyy-mm-dd形式です。例えば2015年7月2日なら、"2015-07-02"になります。


サンプルコード

では、サンプルとしてGoogle Apps Scriptのコードを書き起こしてみます。

赤字部分はGoogle Analyticsの設定に応じて必ず変更してください。
青字部分はデータ取得の対象に応じて、任意の値に変更してください。

なお、サンプルコードを実行すると、キーワード・地域・ネットワークドメインで細分化されたセッション、新規セッション率、新規ユーザーがGoogle Apps Scriptプロジェクトを作成したSpreadSheetに記載されます(対象日付は2015年6月1~2015年6月29日)

function analytics() {
  var PROFILE_ID = "ga:zzzzzzzz";

  var metrics = "ga:sessions, ga:percentNewSessions, ga:newVisits";
  var optArgs = {
    'dimensions': 'ga:keyword, ga:region, ga:networkDomain',
  };
  var startDate = "2015-06-01";
  var endDate = "2015-06-29";

  var ga = Analytics.Data.Ga.get(PROFILE_ID, startDate, endDate, metrics, optArgs).rows;
  var sheet = SpreadsheetApp.getActiveSheet();

  sheet.getRange(1, 1, ga.length, ga[0].length).setValues(ga);
}


とりあえず動作確認したいのであれば、赤字部分だけ適切な値になるように調べて変更し、他の部分はコピー&ペーストで構いません。
コードの実行は[実行]>[analytics]を選択します。

初回の実行時のみ、Googleサービスの実行承認が必要となるので、承認を行います。


承認後、しばらくしてからGoogle Apps Scriptのプロジェクトを作成したSpreadsheetを開き直してみると、下図のようにデータが出力されています。

列ごとの値はそれぞれ下記を示しています。

  • A列:キーワード
  • B列:地域
  • C列:ネットワークドメイン
  • D列:セッション
  • E列:新規セッション率
  • F列:新規ユーザー

これで3つ目のディメンションまで含めてデータを細分化することができました。

サンプルコードを元に出力先Spradsheetの変更や、自動実行に対応して日付の範囲を実行日依存で変えることもできますが、今回はここまでで終了とします。

恐らく一番苦労するのは、考えたディメンションやメトリクスのデータを指定させるところだと思います。(リファレンスはありますが、正直見づらいところがあります)
そのため、何度か変更と実行を繰り返して、ちゃんと思ったデータが出力されていることを確認してから使うことをお勧めします。

0 件のコメント:

コメントを投稿