GoogleAnalyticsの集計値を定期的にSlack投稿したい時があったのですが
「スプレッドシート」「GoogleAnalyticsアドオン」「GAS」を使って簡単に自動投稿バッチ作れたので手順を記載します。
非エンジニアでも作成可能だと思います。
・簡単に作れること
・GAの値をスプレッドシート、GASで自由に集計できること
・集計結果を定期的にslackで通知してくれること
がこの記事で作れるバッチの良いところだと思います。
各項目ごとに詳しい記事が既に存在するので、本記事は索引的な記事になります。
バッチの処理のながれ
- GoogleAnalyticsのデータをスプレッドシートに移す
- スプレッドシートの値を集計する
- 集計した値をSlack投稿する
GoogleAnalyticsのデータをスプレッドシートに移す
GoogleAnalyticsアドオンを使えば、簡単にGoogleAnalyticsのデータをスプレッドシートに移せます。
アドオンの設定の仕方は以下の記事が参考になります。
【初級編】Google Analyticsのデータを完全自動でレポートにまとめる方法、ご存知ですか?
アドオンでGoogle Analyticsを自動集計しよう | MISO
スプレッドシートの値を集計する
スプレッドシートに移したGAの値を集計する場合
・スプレッドシートの関数を使う
・GASを使う
の2つの方法があります。
集計できれば、どちらの方法でも構いません
今回は後者のGASの集計スクリプトのサンプルを載せておきます。
function sample() {
// IDから当該スプレッドシートを取得
var obj = SpreadsheetApp.openById('xxxxx');
// スプレッドシート中の任意のシートを取得
var sheet = obj.getSheetByName("シート1");
// 取得したシートから集計したいセルの範囲を指定して取得
var values = sheet.getRange(1,3,100).getValues();
// 取得した値を合計
var total = 0;
for(objs in values){
for(obj in values[objs]){
total += values[objs][obj] * 1;
}
}
text = '合計値: ' + total;
// salckに投稿 ※ 独自定義の関数
postslack(text);
}
スプレッドシートで集計を行った場合も、以下のように集計値が入ったセルを取得してやればOKです。
// 集計値の入ったセルを取得
var val = sheet.getRange("A1").getValue();
// salckに投稿
postslack(val);
GASでコードを書くまでの手順は以下が参考になります。
GASでスプレッドシートを操作する方法は以下記事が参考になります。
集計した値をSlack投稿する
slack投稿したい集計値ができたら
・投稿したいslackチャンネルのWebhook URLを取得する
・GASを使ってSlackチャンネルに集計値をPOSTする
・作成したGASのスクリプトをトリガーを使って定期実行する
を行えばもうバッチが出来上がります。
投稿したいslackチャンネルのWebhook URLを取得する
Webhook URLを取得するのは以下記事が参考になります。
GASを使ってSlackチャンネルに集計値をPOSTする
GASのUrlFetchAppクラスを使って取得したWebhook URLに投稿したい文字列をPOSTできます。
サンプルを以下に載せておきます。
function postslack(post_text) {
var payload = {
'text' : post_text, // 投稿される本文
'username' : 'sample bot', // slack通知時に表示されるユーザー名
'channel' : 'slack-channel', // 通知先のチャンネル名
};
var options = {
'method' : 'post',
'contentType' : 'application/json',
'payload' : JSON.stringify(payload),
};
// 取得したWebhook URL
var url = 'https://hooks.slack.com/services/xxxxxx';
// 投稿
UrlFetchApp.fetch(url, options);
}
自動投稿するコードの書き方は以下記事が参考になります。
作成したGASのスクリプトをトリガーを使って定期実行する
トリガーを設定して作成したスクリプトを定期実行します。
GASエディタの左メニューにあるトリガーを選択 > 「トリガーを追加」ボタンを押下
してトリガー追加の画面を開きます。
・実行する関数は先程作成したGASの関数を選択します。
・実行するデプロイは「Head」のままでOKです。
・イベントのソースは「時間主導型」を選択します。
あとは分毎なのか時毎なのか日毎なのか選択して「保存」を押下すればトリガーが設定され
指定した周期でスクリプトが実行されます。
成功していれば以下のように集計値がslackに投稿されます。
余談 必要なときだけ送る
当たり前ですが、slackに投稿する前にif文を付けてやれば
特定の条件を満たした場合のみ通知を送る使い方もできます。
これでGAの値の監視みたいなこともできそうです。
// 集計値の入ったセルを取得
var val = sheet.getRange("A1").getValue();
if (val < 100) {
// salckに投稿
postslack(val);
}