ラベル GoogleAnalytics の投稿を表示しています。 すべての投稿を表示
ラベル GoogleAnalytics の投稿を表示しています。 すべての投稿を表示

2015年7月9日木曜日

Google AnalyticsのデータをGoogle Apps Scriptを使ってSpreadsheetに出力する(自動化対応・条件追加等)

こんにちは、井下です。

前回はGoogle Apps Scriptを利用して、Google AnalyticsのデータをSpreadsheetに出力してみました。

これで画面上からは見られなかった、3つ以上のディメンションで絞り込んだデータを見られるようになりましたが、前回のサンプルコードのままだと少し不便なところがあります。

例えば…
  • データ取得範囲を決める開始日・終了日が固定値なので、自動で実行しても意味がない
  • 出力先が常に同じシートなので、実行するたびに上書きされてしまう
  • ヘッダーがないので、ぱっと見てどの行が何のデータなのか分かりづらい
  • 検索キーワードが"not set"になっているデータなど、不要なデータは出力させないようにしたい

今回は上記の4点について、修正を行ったサンプルを書いていきます。


ちなみに、前回書いたサンプルコードはこちらです。
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);
}
※赤字部分は変更必須、青字部分は任意の値に変更する前提です


修正1 開始日・終了日を可変にする

Google AnalyticsとGoogle Apps Scriptの連携させる意義として、定期実行における自動化ができることを前回挙げています。
そのためにはデータの取得範囲の開始日・終了日を実行日に応じて可変にすることと、Google Apps Scriptのトリガー機能の設定が必要になります。

まず、下記のサンプルコードによって、開始日・終了日を実行日に応じて可変にします。
function analytics() {
  var PROFILE_ID = "ga:zzzzzzzz";
  var START_DATE_OFFSET = 8;
  var END_DATE_OFFSET = 1;

  var metrics = "ga:sessions, ga:percentNewSessions, ga:newVisits";
  var optArgs = {
    'dimensions': 'ga:keyword, ga:region, ga:networkDomain',
  };

  var nowDate = new Date();
  var startDate = dateFormat(new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() - START_DATE_OFFSET));
  var endDate = dateFormat(new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() - END_DATE_OFFSET));

  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);
}

function dateFormat(date) {
  return date.getFullYear() + '-' + ('0' + (date.getMonth() + 1) ).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
}
サンプルコードでは、「1週間分のデータを抽出」する例としています。

なお、データの日付範囲を変更したい場合は、"START_DATE_OFFSET"および"END_DATE_OFFSET"の値を変更してください。
"START_DATE_OFFSET"は日付範囲の開始日が実行日の何日前か、"END_DATE_OFFSET"は日付範囲の終了日が実行日の何日前かを決めています。

修正2 実行タイミングの自動化

次にトリガー機能の設定です。
Google Apps Scriptには定期実行や、特定の動作がされたときのみ実行するトリガー機能が用意されています。

トリガー機能の設定はGoogle Apps Scriptの[リソース]>[現状のプロジェクトのトリガー]から行います。


最初は何も設定されていないので、ダイアログに表示されているリンクをクリックして設定画面を開きます。

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で取得する

2015年4月23日木曜日

Fusion Tables×Google Apps Script (マッピング編2) ~Google Analyticsのデータをインプットに、Fusion Tablesでマッピングする~

こんにちは、井下です。

少し間が空いてしまいましたが、今回の内容は前回予告していた通り、Google Analytics・Fusion Tables・Google Apps Scriptの3つを組み合せ、Google AnalyticsのデータをFusion Tablesに持ってきて、マッピングをできるようにしてみます。

なお、次回からはFusion Tables以外の話を書くつもりです。
気が付けばFusion Tables関連で6回もやっていました。ゴールをどこにしようか迷っていたとかじゃありませんよ。

ちなみに今まで書いた内容はこちら


実装したい内容の手動実行
実装を行う前に、具体的にどんなことを行おうとしているのかを、手動で実演してみます。
実装内容だけ知りたいという方は、ページ下部まで進んでください。

今回、実現したいことは、「Google Analyticsのデータを都道府県別に色分けできる状態にしたマップを作成する」ことの自動化です。

それを手動で行おうとすると、次のような手順を踏むことになります。
  1. Google Analyticsから地域別のデータをFusion Tablesに移行する
  2. 移行したデータの入ったテーブルと、都道府県名+都道府県の領域の情報が入ったテーブルをマージする
なお、"都道府県名+都道府県の領域の情報が入ったテーブル"に関しては、前回のブログに書いてありますので、詳細についてはそちらご参照ください。


まず、Google Analyticsから地域別のデータを表示します。
なお、例として利用しているデータは"国"に"Japan"を指定しているので、都道府県別のデータが表示されています。


Google Analyticsのエクスポート機能を使ってFusion Tablesへ移行したいのですが、Google Analyticsから直接Fusion Tablesへはエクスポートできません。
代替手段として、一度スプレッドシートへエクスポートし、Fusion Tablesからスプレッドシートのデータをインポートします。

なお、Google Analyticsは表示されている1ページ分のデータしかエクスポートしてくれないので、表示行数を調整して、欲しいデータが入るようにしておきましょう。



スプレッドシートへのエクスポートを選択すると、確認画面が開きます。問題がなければ"はい。データをインポートします"を選択します。


エクスポートに成功したので、作成されたスプレッドシートを確認してみます。


次はスプレッドシートのデータをFusion Tablesにインポートします。
Fusion Tablesの新規作成から"Google Spreadsheets"を選択し、先ほど作成したスプレッドシートをインポート対象にします。


スプレッドシートからインポートする場合、何行目をカラムとして見なすかを選択します。


スプレッドシートでは6行目にカラム名が記入されていたので、"6"を選択しました。


テーブル名などを新規作成前に設定できますが、特に変更せずに"Finish"を選択します。


これでようやくGoogle Analyticsから、Fusion Tablesへデータを移行することができました。


ただし、前回説明したように、この状態では都道府県ごとのマッピングはできません。都道府県ごとの境界がどこからどこなのかを、レコードごとに与えなければなりません。

都道府県ごとの境界のデータを持つテーブルは前回作成していますが、境界のデータを1レコードずつ入力するのは非常に手間がかかるので、できれば避けたいところです。

そこでFusion Tablesのマージ機能を利用します。
Fusion Tablesのマージ機能を一般的なDBで言うなら、"結合ビューの作成"と言えるでしょうか。

今回はGoogle Analyticsからエクスポートしたテーブルをベースに、都道府県の境界データを持ったテーブルをマージしてみます。

マージ機能を使うには、"File"メニューの中段下あたりにある"Merge"を選択します。


マージする対象のテーブルを選択する画面が開くので、都道府県の境界データを持った"Japan"テーブルを選択します。(前回作成していたテーブルで、デフォルトで用意されているわけではないので注意)


テーブルを選択すると、2つのテーブルから、それぞれカラムを選択する画面が開きます。
ここで選択したカラム同士で、合致するデータがあるレコードのみ表示するビューを作成することになります。


それぞれ都道府県名が入ったカラムを選択してみましたが、ここで1つ問題が発生しました。
Google Analyticsからエクスポートしたテーブルでは、都道府県名の後ろに"Prefecture"が付いていることがありますが、もう片方のテーブルではそういった文字列は付いていません。

このままではカラム同士のデータ合致判定が思った通りに機能してくれません。


仕方がないので、どちらかのデータを修正します。
手早く修正するために、Google Analyticsからエクスポートしたスプレッドシートの" Prefecture"を一斉置換で削除し、新しくテーブルを作成することにします。
(Fusion Tablesだと1つずつしかレコードを修正できず、SQLの発行もGoogle Apps Scriptなど外部実装を介さなくてはできないので、少し時間がかかります)



データを修正したテーブルで改めてマージをしてみます。互いに都道府県名の入ったカラムを選択します。


次にどのカラムを表示するのかを選択します。Google Analyticsのカラムはとりあえず全て表示させておきますが、もう片方のテーブルで欲しいカラムは、都道府県の境界データを持ったカラムだけなので、それ以外のカラムのチェックを外します。


これでMergeを選択すると、設定した条件のビューが作成されます。


Google Analyticsからエクスポートしたテーブルをベースとして、都道府県の境界データの入ったカラムが追加されています。(一番右のカラム)


このビューのマップ表示をしてみると、まだ数値ごとの色分けこそされていませんが、都道府県が赤で塗られています。(赤で塗られていないところは、データが存在しないことを示しています)
ここまで来れば、後はどのカラムを色分けの基準にするか、どんな値ごとに色分けするかを設定するだけです。




ここまでかなり長くなりましたが、やりたいことのイメージとしては、Google Analyticsのデータをインプットとして、日本地図に色が塗られているテーブルを、ひと月ごとに自動作成してくれる実装です。



実装による自動化
手動で行った手順を元に実装していきます。ただし、手動とは違ってわざわざスプレッドシートに一度エクスポートする必要はありません。また、手動で修正していた都道府県名の" Prefecture"の削除も内部処理で一括して行います。

2014年10月27日月曜日

Google AnalyticsとGoogle Apps Scriptの連携

はじめまして、竹内です。
A-AUTO 50のWebサイト周りを担当しています。


A-AUTO 50ってなに?Webサイト?っていう人はこのページの右側にリンクがあるので、是非クリックしていってくださいw


今回は私も初めての投稿なので、A-AUTO 50関連の内容にしようと思います。
と言っても、Webサイト構築ではなくGoogle AnalyticsとGoogle Apps Scriptを使ったログの自動収集について。