Google Analyticsの前日レポートを毎日Slackに自動投稿する<その3>(GoogleAnalytics + Google Apps Script(GAS)+ LogicApps + Slackの連携)

Pocket

logicapp-ga-ttl
前回はGoogle Apps Script(GAS)の設定をしました。今回は最後の部分、Slackに投稿する「Logic Appsの設定」です。
LogicAppsに関しては@twit_ahf さん相談してご協力いただきました。
本当に本当にありがとうございました!!(土下座)

というわけで、「Logic Appsの設定」について手順をメモ。

LogicAppsの設定

作成するLogic Appsのリージョンは「米国中北部」で作成してください。(他のリージョンではまだ提供されていないコネクターが含まれるため)

logicapp-ga001
全体のLogic Flowはこのような感じ。
今回のLogicFlowのキモとなる図中の赤枠A部分「GETでGASにアクセスし、リダイレクト先から結果のJSONを取得」するためのポイントについては、@twit_ahf さんがブログに非常にわかりやすくまとめてくださっているので設定方法と詳細については以下の記事をどうぞ。

GAS のようなリダイレクトが絡む HTTP 呼出しを LogicFlow で扱う
http://blogahf.blogspot.jp/2017/02/gas-http-logicflow.html

(1)トリガーの設定

logicapp-ga002
今回は1日に1回決まった時間にSlackに投稿したいので上記の設定としました。(詳細オプションも指定)
時間は、GoogleスプレッドシートのGoogleアナリティクスアドオンの自動更新時間より後に設定しておくのがポイントかなと。

(2)Parse Jsonを使用してパラメーターを後続のコネクターで利用できるようにする

「作成4」で出力される結果を後続のコネクターで利用できるようにします。
logicapp-ga003
Parse Jsonコネクターを選択。
コンテンツは「出力(前のコネクターの結果が入る)」を選択します。
先日のアップデートでデザイナ上でサンプルデータからスキーマを生成してくれる機能「JSON Schema」が使えるようになりました!
「サンプルのJSONペイロード」をクリック。

logicapp-ga004
「サンプルのJSONペイロード」は、前回設定したGASの「ウェブ アプリケーションとして公開」で表示されるURLにアクセスした際に出力されるJSONを利用します。
取得した値のJSON の要素名に : が使われているのですが、LogicFlow では現状 : が含まれた名前を扱えません。

[{"ga:date":"2017-02-16T15:00:00.000Z","ga:users":457,"ga:newUsers":407,"ga:sessions":484,"ga:goal1Completions":0,"ga:pageviews":541}]

このような結果だったら、
「ga:users」を「gausers」というように「:が含まれない形」に変更し、赤枠内にコピペ。

logicapp-ga005
Parse Jsonコネクターにスキーマーが入力されました。

(3)Slackに投稿する

logicapp-ga006
「さらに追加」から「For each」を選択し「本文」を入力。

logicapp-ga007
Slackに投稿する内容はこのような感じにしてみました。
「これは何の結果ですよ」というのを日本語で入力できるので、このあたりはお好みで。

以上でLogicFlowは完成!

実行結果を見てみる

logicapp-ga008
このような内容が自動で毎朝8:00に指定のSlackチャンネルに投稿されます。
さて、GASではGoogleスプレッドシートの最終行をJSON形式で出力するようにしているのに、なぜか日付だけが「-1日になって出力される」という謎現象が…。
(データ自体は最終行のもので間違いないのに)
なので、今回は日付を投稿しないようにしました。
このあたり、今後原因を探っていかないとな…という課題はありますが、アクセス結果は問題なく出力されているのが確認できます。

最後に

今回は「GASでJSON形式の出力させればLogicAppsで簡単につなげるしデータ整形できるっしょw」って思ってたけど全然簡単ではなく、恐ろしいほどにハマりました…。
GASの謎な振る舞い(権限・認証周りとか)に振り回されて「GETがよさそう」という結論に至りましたが、もっといい方法ありそうな気も…うーん。
URLがリダイレクトするというのもハマったポイントの一つでしたし。
とはいえ、LogicAppsのアップデートに救われたところが多かったですw(Parse Jsonとか)
ご協力いただいたお二方、本当に本当にありがとうございました!!

今回は非常に苦労したんですが、実運営の環境で前日のデイリーデータを関係者全員の目に触れるところに投稿するようになり「サイトがどういう状態か関係者全員が意識する」という環境を作るキッカケになったは個人的にはよかったかなーと思ってます。
一部の人間だけが意識していても、サイトの根本的な改善にはつながらないと思うので。
サイト運営担当されてる方でなかなか理解者が社内に増えない…という方、この方法はオススメですよ!w

参考にさせていただいたサイト

GAS のようなリダイレクトが絡む HTTP 呼出しを LogicFlow で扱う
http://blogahf.blogspot.jp/2017/02/gas-http-logicflow.html

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください