Google Analyticsでシンプルにコンバージョンを計測し、slackに投稿する

この記事は[PORT Advent Calender](https://qiita.com/advent-calendar/2017/port)の11日目です。

---

[PORT株式会社](https://www.theport.jp/)でエンジニアをしている@kehondaです。(Qiita初投稿)
ちょっとドキドキですがよろしくお願いします。

#前置き
私の所属しているチームは、Webサービスの保守・運用を行なっています。
例えば、日々の運用の中で

- その機能は、ユーザに適切に利用されているのか
- その機能は、収益を得られているのか

を知りたいとき、社内のディレクターやマーケターにデータ集計を任せてしまった事が多かったです。
しかしながら、ちょっとした調整や、エンジニア主導での機能実装などの場合には特に、エンジニアも計測したいですよね。

そんな経緯で、今まで何となくしか利用していなかったGoogle Analyticsを積極的に利用を試みることにしています。
その中でも、私が業務で実践している、Google Analyticsを用いたシンプルなコンバージョンの計測手法に関して紹介したいと思います。

#手段
今回は例として、対象のWebサービスを`イベント申し込みサービス`とします。

### 何を計測するか
マイページにある「イベント検索機能」からどれくらいのユーザがイベントを検索し、イベント申し込みまで行なっているのか

### どこで計測するか
Google Analyticesで

### どんな目的で計測するか
マイページのイベント検索機能の使用状況を知り、改善をしていきたいから

### どうやって計測するか
Google Analyticsの`セグメント（シーケンス）`を利用してみる

### 誰が計測するか
チームメンバー全員が計測できるようにしたい

### いつ計測するか
日次で計測したい

# 1. 計測
ユーザーサマリーなどを開いて、`セグメントを追加`

![スクリーンショット 2017-12-11 21.13.32.png](https://qiita-image-store.s3.amazonaws.com/0/140026/96a35a10-95c1-8c1e-e3c2-1aab53c7c8c2.png)


`新しいセグメント`をクリック

![スクリーンショット 2017-12-11 21.14.42.png](https://qiita-image-store.s3.amazonaws.com/0/140026/b78da829-19a4-bccd-925b-cab0113ebc7e.png)


ここで色々な条件を指定してセグメントを行えます。
ここまではよくあるかと思いますが、今回利用するのは`シーケンス`です。
同一セッション内（もしくは同一ユーザ内）で、条件のステップを指定できます。
ここでは、`マイページに訪れて`->`検索ページに遷移して`->`イベントに申し込んだ`条件を指定してみます。

ここでonClickのイベントタグやディメンションを利用することでより精度の高い計測もできそうです。

![スクリーンショット 2017-12-11 21.26.15.png](https://qiita-image-store.s3.amazonaws.com/0/140026/1cba2afe-1859-fd41-798a-b90f1b835296.png)


今回シーケンスを`セッション`としていますが、[アナリティクスでのウェブ セッションの算出方法](https://support.google.com/analytics/answer/2731565?hl=ja)を見る限り、デフォルトは30分、もしくは他のキャンペーンからの流入（google検索なども別キャンペーンとなる）は別セッションになるので、精度は悪くなさそうです。

そして名前をつけて保存。

![スクリーンショット 2017-12-11 21.26.35.png](https://qiita-image-store.s3.amazonaws.com/0/140026/b6ba9dba-6e1a-0109-8e40-4fd3ef38d519.png)

これで新しいセグメントができました。

あとはこのセグメントを使用するだけで、**事前にマーケティングタグの設置や目標設定を行わずに**、条件に合致したユーザがどれくらい存在するかを知る事ができました。


#2. 可視化
毎日googleアナリティクスを見に行くのは面倒で続かないので、
　**集計できた情報を測定してグラフ化し、`Slack`のチャンネルに日次で投稿**してみます。

GoogleスプレッドシートとGoogleAppsScriptを利用します。

## Googleスプレッドシート
Google Analyticsアドオンを使用します。詳しい設定方法は割愛します。
`Create New Report`を実行すると、`Report Configuration`が生成されるので、そこでの設定例を記載します。

| Configuration Options       |       Your Google Analytics Reports |
|:-----------------|------------------:|
| Report Name             |              マイページの検索からコンバージョンしたユーザ |
| Type           |            core |
| View (Profile) ID / ids             |              ga:< id > |
| Start Date               |                10daysAgo |
| End Date             |             yesterday |
| Last N Days          |           |
| Metrics          |          ga:sessions |
| Dimensions          |          ga:Date |
| Sort          |          |
| Filters          |          |
| Segment          |          gaid::< hogehoge >|
| Sampling Level          |           |
| Start Index          |           |
| Max Results          |           |
| Spreadsheet URL          |           |

Metricsに`ga:sessions`、Dimensionsに`ga:Date`、またSegmentに`gaid::< hogehoge >`を設定してみます。

設定するパラメータは、特にSegment等はgaidとかでよくわからないんで、ここで見ると補完してくれて便利でした。
https://ga-dev-tools.appspot.com/query-explorer/

完了したら、一度レポートを作成します。2つめのタブにレポートが出力されるのでグラフを作っておきましょう。

![スクリーンショット 2017-12-11 22.28.08.png](https://qiita-image-store.s3.amazonaws.com/0/140026/cc51b6ec-c534-532e-39ad-0049491d956a.png)

※数値はフィクションです
![スクリーンショット 2017-12-11 22.28.24.png](https://qiita-image-store.s3.amazonaws.com/0/140026/23d512cc-df52-f5fa-e53f-a4b9882c078f.png)

最後に、このレポーティングが自動で取得される様にスケジューリングをします。
![スクリーンショット 2017-12-11 22.27.42.png](https://qiita-image-store.s3.amazonaws.com/0/140026/318a0b54-9d3e-61d2-e87c-89370dd7fed1.png)

## GoogleAppsScript

出力されたグラフをslackに投稿するスクリプトをGoogleAppsScriptで実装します。

```js:sample.js
function myFunction() {
  var mySheet = SpreadsheetApp.openById('< ID >').getSheets()[1];
  var chartImage = mySheet.getCharts()[0].getBlob().getAs('image/png').setName("chart.png");
  var filesUpload = 'https://slack.com/api/files.upload';
  var payload = {
    'token' : '< token >',
    'channels': 'sample_channel',
    'file': chartImage,
    'filename': 'chart.png',
    'initial_comment':'マイページの検索からコンバージョンしたユーザ'
  };
  var params = {
    'method' : 'post',
    'payload' : payload
  };
  var response = UrlFetchApp.fetch(filesUpload, params);
}
```

- `openById`の引数は`https://docs.google.com/spreadsheets/d/!これ!/edit`
- `.getSheets()[1]`は前から2番目のタブ
- `getCharts()[0]`は1番目のグラフ
- `token`は[Bots](https://slack.com/apps/A0F7YS25R-bots)作成時に取得できるtoken

また、毎日朝9~10時に実行する様にします。

![スクリーンショット 2017-12-11 21.53.28.png](https://qiita-image-store.s3.amazonaws.com/0/140026/89537fb9-8ede-831b-6443-7823ab6dd17c.png)

#3. 結果
slackに通知されるようになりました。これでチームメンバーもwatchしてくれますね。


![スクリーンショット 2017-12-11 22.00.46.png](https://qiita-image-store.s3.amazonaws.com/0/140026/b34e4ba6-da57-97d9-205c-865322a04f0b.png)


# まとめ
いたって簡単で、目新しくもない方法を紹介してしまいましたが、この方法を応用してセグメントの条件を細かく設定したり、eコマースとの連動をすることによって、知りたい情報をより直感的に得ることができ、Webサービスの改善をするモチベーションを上げられそうですね。

次回のGoogle Analyticsのネタは`目標到達プロセス`あたりを深めて共有できればと思います。

---

最後になりますが、PORT株式会社では[自社サービスを支えてくれる優秀なRubyエンジニアを募集しています](https://www.theport.jp/)(Rubyエンジニア以外も)。
もくもく会も行なっていますので、ぜひ一緒にもくもくしましょう！
[PORTもくもく会](https://freestyle-mokumoku.connpass.com/)


[PORT Advent Calendar](https://qiita.com/advent-calendar/2017/port)はまだまだ続きます。乞うご期待！