LoginSignup
1
1

More than 1 year has passed since last update.

GoogleAnalyticsの集計値をSlackに自動投稿する簡単バッチの作成

Last updated at Posted at 2021-10-21

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エディタの左メニューにあるトリガーを選択 > 「トリガーを追加」ボタンを押下

してトリガー追加の画面を開きます。

スクリーンショット 2021-10-22 015434.png

・実行する関数は先程作成したGASの関数を選択します。
・実行するデプロイは「Head」のままでOKです。
・イベントのソースは「時間主導型」を選択します。
あとは分毎なのか時毎なのか日毎なのか選択して「保存」を押下すればトリガーが設定され
指定した周期でスクリプトが実行されます。

成功していれば以下のように集計値がslackに投稿されます。
スクリーンショット 2021-10-22 015933.png

余談 必要なときだけ送る

当たり前ですが、slackに投稿する前にif文を付けてやれば
特定の条件を満たした場合のみ通知を送る使い方もできます。

これでGAの値の監視みたいなこともできそうです。

  // 集計値の入ったセルを取得
  var val = sheet.getRange("A1").getValue();
  if (val < 100) {
    // salckに投稿
    postslack(val);
  }
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1