Np-Urのデータ分析教室

オーブンソースデータなどWeb上から入手できるデータを用いて、RとPython両方使って分析した結果を書いていきます

Google アナリティクス APIからデータを取得してSlackにポストするBotを作成

本記事は、Slack Advent Calendar 2017の6日目の記事です。



以前に
www.randpy.tokyo
にて、Google AdsenseのデータをSlackにポストするBotを作成しました。

今回はその続編ということで、Google アナリティクスのデータをSlackにポストするBot作りに挑戦してみましょう。

といっても流れはほぼ前回と同様で、今回もGAS(Google Apps Script)を使います。
完成形としては、以下のようなイメージです。
f:id:Np-Ur:20171118153632p:plain

  • SlackからGASへ情報をポストする
  • GAS側でSlackから受け取った情報を元に、Google アナリティクスからデータを取得する
  • Slackへ情報を返す

といった流れになります。

Slash Commandsの設定

まずはSlash Commandsの設定を行います。
https://slack.com/apps/A0F82E8CA-slash-commands?page=1にアクセスしてください。
次に「Add Configuration」をクリックしましょう。

f:id:Np-Ur:20171114232110p:plain

その後、「/analytics」と入力して次へ。(この部分はコマンドの名前なので、自由に変更してもらって構いません。)

Token部分は、GAS側で本当にこのリクエストを実行してよいのか認証する際に必要です。コピーするなりメモ帳などに貼り付けておくなりして、後で使えるようにしておきましょう。
f:id:Np-Ur:20171118153924p:plain

Slash Commandsの設定は一旦終わりです。続いてGAS側を設定していきます。
ただし、またすぐSlash Commandsの設定に戻るので、閉じずにそのままにしておいてください。

GAS(Google Apps Script)の設定

Google Apps Scriptのスクリプトエディタを開いて編集していきます。

スクリプトエディタの開き方については、過去記事を参考にしてください。
www.randpy.tokyo

コードとしては、以下の通りです。

Githubにも置いてあります。
github.com

まず、1行目部分に、先ほどコピーしたTokenを貼り付けてください。
続いて、GASからGoogle Analytics APIを利用するための設定に入ります。

『リソース』 >> 『Googleの拡張サービス』をクリックしてください。
ここでは、Google が提供する様々なAPI等を使えるに設定することができます。
f:id:Np-Ur:20171118142050p:plain

Analytics APIを有効にするため、該当部分を「On」にしたら、Google APIコンソールをクリックしましょう。
f:id:Np-Ur:20171118154320p:plain

Google のAPIを使えるようにするためのページに飛ぶので、上部の検索窓から「Analytics API」を検索し、「有効にする」を選択してください。
f:id:Np-Ur:20171206115151p:plain
そしたら元のGASページに戻って大丈夫です。
これにてAnalytics APIからデータ取得ができるようになりました。

また、どのサイトのGoogle アナリティクス情報を取得してくるか指定する必要があります。

この20行目の「XXXXXX」部分に、取得したいGoogle アナリティクスのプロファイルIDを貼り付けてください。

Google アナリティクスのプロファイルID

プロファイルIDとは、Google アナリティクスにログインし、該当のビューを閲覧しているときにURLを見てみると
https://analytics.google.com/xxxxxxxxxx/a111111111w222222p3333333/
こんな風になっているかと思います。このp以降の文字列がプロファイルIDです。
f:id:Np-Ur:20171118155622p:plain

それぞれにビューごとに固有のプロファイルIDが与えられています。もし複数ビューを管理している場合は見比べてみてください。

これにてコード部分はOKです!お疲れ様でした。
次は公開作業です。
www.randpy.tokyoを参考に、アプリケーションURLを作成してください。

Slash Commands設定作業へ

ここまで来たら、先ほど途中だったSlach Commandsの設定ページに戻りましょう。
先ほど作成したGASの公開用URLをコピペしてください。
f:id:Np-Ur:20171118155937p:plain

私は分かりやすいように、Botの名前を「analytics-bot」に変更し、またアイコンをグラフマークにしてみました。
f:id:Np-Ur:20171118160048p:plain
このあたりは、設定してもしなくてもOKです。

入力できたら画面下部の「Save Integration」をクリックしてください。Slack側の設定もこれにて完了です。

大体Google AdsenseのBotを作ったときと一緒ですね。
パターンは決まっているので、慣れると10分もあれば作れてしまいますよ!!

動作方法

今回はGoogle Adsense Botと同様に、昨日データと今月データの2種類を取得できるようになっています。

「/analytics 昨日」と打つと、昨日のGoogle アナリティクスデータを表示してくれます。「/analytics 今月」も同様です。
f:id:Np-Ur:20171118153632p:plain

アクセス数見られるのちょっと恥ずかしいので隠しています…。

昨日か今月か、という処理は以下部分で管理しています。

このあたりを変更すれば、範囲を変えて(直近5日間、直近30日間、半年間など)表示することができます。

今回、流入元ごとの

  • UU(ユニークユーザー数)
  • セッション数
  • PV(ページビュー数)

の値を取得してみました。

これは、Google アナリティクスにおける

  • メトリクス
  • ディメンション

という考え方にのっとってリクエストを投げています。

コードでは以下が該当します。

どういうリクエストが送れるかは、公式サイトのリファレンス指標とディメンションを見るのが一番早いです。

リファレンスを見ながら色々コードをカスタマイズしてみると面白いと思います。

まとめ

今回は、SlackからGoogle アナリティクスにアクセスしてデータを取得するBotを作成しました。
Google Adsnseに引き続き、自動化に成功しました!

どんなデータを特に見たいかによって、APIに投げるリクエスト部分を変更し、最適Botを作ってみてください。