GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信

Birdhouse

みなさん、こんにちは!
マイチャットがにぎやかになってきましたタカハシ(@ntakahashi0505)です。

以前こちらの記事でGoogleアナリティクスの前日のレポートを自動で取得する方法について書きました。

Googleアナリティクスの自動デイリーレポート&よく使うMetrics一覧
毎日のGoogleアナリティクスレポート。ページビュー、ユーザー数、直帰率など複数の指標について自動でスプレッドシートに出力する方法です。よく使うオススメのMetrics一覧のオマケつきです。

でもあれですよね。

朝一に尋ねてくる上司いますでしょ?

「昨日の数字どうだった??」

シートを開けばご自分でもすぐにチェックできるんですけどね。

部下は作業を中断してシートを開いて「ページビューは○○でした」と報告するわけですが、その間上司は後ろに立ってただその作業を見ているわけです。

二人にとってもったいない時間が毎日積み重なっていっちゃいますよね。

そこで登場するのがチャットワークです。

毎朝尋ねられる前に先手を打って、上司がメンバーとして入っているグループチャットに自動で送りつけてやりましょう。

Google Apps Script(通称GAS)を使えばチャットワークに自動でいろいろと通知をすることができます。

429 Too Many Requests

今回の記事では、Googleアナリティクスの前日のレポートをチャットワークに毎朝自動で通知する方法についてお伝えしていきます。

どうぞよろしくお願いします!

スポンサーリンク

GASによる前日のGoogleアナリティクスレポート通知システム

GoogleアナリティクスアドオンによるDailyレポート

これまでのおさらいなのですが、スプレッドシートのGoogleアナリティクスアドオンを使って、前日のレポートをスプレッドシートに自動で記録する方法について以前お伝えしました。

Googleアナリティクスの自動デイリーレポート&よく使うMetrics一覧
毎日のGoogleアナリティクスレポート。ページビュー、ユーザー数、直帰率など複数の指標について自動でスプレッドシートに出力する方法です。よく使うオススメのMetrics一覧のオマケつきです。

実際のレポート設定はこちらです。

Googleアナリティクスアドオンレポート設定

いくつかのレポートが設定されていますが、今回はこの中の「Dailyレポート」から前日の情報を抜粋して通知します。

「Dailyレポート」シートの中身はと言いますと

GoogleアナリティクスDailyレポート詳細

このようになっています。

A列から順番に日付、ユーザー、セッション、直帰率、平均セッション時間、ページビュー、ページビュー/セッションと一通りのデータが日次で記録されています。

今回のスプリプトではこのすべての項目の前日分をチャットワークに通知したいと思います。

チャットワークへ通知するまでのシステムの流れ

チャットワークにメッセージを通知するためのGASの書き方、ライブラリの準備などはこちらで解説をしていますので、まだの方はご覧頂ければと思います。

429 Too Many Requests

ここまで完了しているという前提で進めていきます。

システムの動作の流れとしては

  1. Googleアナリティクスの前日までのデータがスプレッドシートに自動で記録される
  2. その記録のあとの時限設定でスクリプトを起動する
  3. スクリプトによりスプレッドシートの情報を抽出、整形してチャットワークに送信

という流れです。

Googleアナリティクスアドオンは毎朝5時までに動作することになっていますので、チャットワークへの通知は毎朝8時の設定にしたいと思います。

Googleアナリティクスのデイリーレポートをチャットワークに通知するスクリプト

実際のスクリプトはこちらになります。

function cwFromGA() {
 
  var mySS=SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得
  var sheetDaily=mySS.getSheetByName("Dailyレポート"); //Dailyレポートシートを取得

  var rowDaily=sheetDaily.getDataRange().getLastRow(); //Dailyシートの使用範囲のうち最終行を取得
 
  var yDate = sheetDaily.getRange(rowDaily,1).getValue();
 
  // チャットワークに送る文字列を生成
  var strBody = "[info][title]いつも隣にITのお仕事レポート " +
      Utilities.formatDate(yDate, 'JST', 'yyyy/MM/dd') + "[/title]" +  //ga:date
      "ユーザー: "
      + sheetDaily.getRange(rowDaily,2).getValue() + "n" + //ga:users
      "セッション: "
      + sheetDaily.getRange(rowDaily,3).getValue() + "n" + //ga:sessions
      "直帰率: "
      + Number(sheetDaily.getRange(rowDaily,4).getValue()*100).toFixed(1) + "%n" + //ga:bounceRate
      "平均セッション時間: "
      + Number(sheetDaily.getRange(rowDaily,5).getValue()).toFixed(1) + "n" + //ga:avgSessionDuration
      "ページビュー: "
      + sheetDaily.getRange(rowDaily,6).getValue() + "n" + //ga:pageviews
      "ページビュー/セッション: "
      + Number(sheetDaily.getRange(rowDaily,7).getValue()).toFixed(2) + "[/info]"; //ga:pageviewsPerSession
 
  // チャットワークにメッセージを送る
  var cwClient = ChatWorkClient.factory({token: ' ------------------------'}); //チャットワークAPI
  cwClient.sendMessage({
    room_id: XXXXXXXX, //ルームID
    body: strBody
  });
}

ちょっとごちゃごちゃしている感はありますが、新しい要素はそんなに多くありません。以下で解説をしていきます。

シート名を指定してシートオブジェクトを取得

まず以前のスクリプトで扱うスプレッドシートでは、スプレッドシートに対してシートが一つしかありませんでした。

従いまして、Sheetオブジェクトをつかむのに

var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得

などとして、ActiveSpreadsheetも飛び越えてActiveSheetを直接つかみに行くことができたのですが、今回のスプレッドシートには複数のシートが含まれていますので、シート名を使ってSheetオブジェクトをつかみます。

まず

SpreadsheetApp.getActiveSpreadsheet()

で、現在のSpreadsheetオブジェクトを取得しつつ、それに対して

Spreadsheetオブジェクト.getSheetByName(シート名)

シート名を指定することでSheetオブジェクトを取得します。

実際のスクリプトでは

var mySS=SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得
var sheetDaily=mySS.getSheetByName("Dailyレポート"); //Dailyレポートシートを取得

として、今回の主役であるDailyレポートのシートをsheetDailyという変数に取得しています。

日付のフォーマットを変更する

10行目から24行目まではすべてチャットワークに送る文字列を生成している箇所ですが、日付と小数点つきの数値の2点で困ったことが起きます。

まず日付の箇所ですが、昨日の日付はDailyレポートシートの最終行のA列を見ればよいですから

var strBody = ~ + sheetDaily.getRange(rowDaily,1).getValue() + ~

などとすれば取得できるのですが、これをチャットワークにそのまま送ると

チャットワークに送る日付のフォーマット

こんなに細かい情報はいらない…。

Utilities.formatDateで日付フォーマットを変更する

実はJavaScriptでは日付のフォーマットを変更するための直接的な命令がなく、皆さん独自の関数使ったりして工夫されているのですが、Google Apps ScriptではGoogleが便利なライブラリを用意してくれているので、それを使うことができます。

Utilitiesというライブラリを使いまして

Utilities.formatDate(日付, タイムゾーン, フォーマット)

とすることで、日付フォーマットを変更することができます。

タイムゾーンは日本の場合は「JST」を指定してあげればOK。フォーマットは年を「y」、月を「M」(※大文字なので注意!)、日を「d」を使って表現します。

  • ‘yyyy-MM-dd’ とすれば 「2015-12-03」
  • ‘yyyy年M月d日’ とすれば 「2015年12月3日」

となります。

今回は最も一般的な書き方と言えますが

var strBody = ~ +
      Utilities.formatDate(yDate, 'JST', 'yyyy/MM/dd') + ~ //ga:date

としました。

繰り返しになりますが、UtilitiesはGAS専用ですから、JavaScript一般では使えませんよ。

数値のフォーマットで小数点の桁数を指定する

次に小数点付きの数値についてです。

直帰率や平均セッション時間、ページビュー/セッションは小数点以下の桁数が出る値になりますが、これらをそのままチャットワークに送りますと

チャットワークに送る数値のフォーマット

めいっぱい小数点以下の桁数が表示されてしまう…。

toFixedメソッドで小数点以下の桁数を指定

そんなときはNumberライブラリのtoFixedメソッドを使って

Number(数値).toFixed(桁数)

とすることで、桁数を指定することができます。

こちらのライブラリはJavaScript標準ですよ。ちょっとややこしいですね。

今回は

var strBody = ~ +
      "直帰率: "
      + Number(sheetDaily.getRange(rowDaily,4).getValue()*100).toFixed(1) + "%n" + //ga:bounceRate
      "平均セッション時間: "
      + Number(sheetDaily.getRange(rowDaily,5).getValue()).toFixed(1) + "n" + //ga:avgSessionDuration ~ +
      "ページビュー/セッション: "
      + Number(sheetDaily.getRange(rowDaily,7).getValue()).toFixed(2) + "[/info]"; //ga:pageviewsPerSession

としています。

直帰率は%表示にしたかったので、100をかけたものに対して小数点以下1桁、平均セッション時間は小数点以下1桁、ページ/セッションは小数点以下2桁としています。

実行結果

こちらが実行結果ですね。

チャットワークに送る前日のレポート

これで上司から毎朝声をかけられることもありませんよ…めでたしめでたし。

まとめ

Googleアナリティクスの前日のレポートをチャットワークに自動で通知する方法についてお伝えしてきました。

もう新たに出てくる要素はだいぶ小技ばかりになってきましたね。

次回は今回のレポートに、前日の記事ランキングを追加したいと思います。

GASでGoogleアナリティクスの記事ランキングをチャットワークに送る
Google Apps Script(GAS)を使ってGoogleアナリティクスの前日のレポートをチャットワークに自動で通知するシステムを作成しています。今回は記事ランキングを追加してきます。

どうぞお楽しみに!

連載目次:Googleアナリティクスデータをスプレッドシートで自動取得

  1. Googleアナリティクスデータをスプレッドシートで自動取得する方法
  2. スプレッドシートでGoogleアナリティクスデータのグラフを毎日・完全自動で更新
  3. スプレッドシートのピボットを使用して流入別セッション数も自動でレポーティング
  4. Googleアナリティクスの自動デイリーレポート&よく使うMetrics一覧
  5. 記事別ページビューランキングを自動で取得&よく使うDimensions一覧
  6. GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
  7. GASでGoogleアナリティクスの記事ランキングをチャットワークに送る

連載目次:初めてのGoogle Apps Scriptで自動でチャットワークに色々と送る

最初のお題にも限らずチャットワークを中心に操作していきます。スプレッドシートやカレンダーをはじめとするGoogleサービスはもちろん、Twitterなどの外部のサービスともAPIで連携させて色々なものをチャットワークに通知してみますよ。
  1. Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
  2. Google Apps Scriptでチャットワークの名言botを作る方法
  3. Google Apps ScriptでTwitterの検索結果を自動でチャットワークに通知
  4. 【幹事必見!】スプレッドシートの入力が完了したらチャットワークに自動で通知する方法
  5. スプレッドシートのリストアップ件数をGASでチャットワークに通知する
  6. GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
  7. GASでGoogleアナリティクスの記事ランキングをチャットワークに送る
  8. Google Apps ScriptでWordPressの更新情報をチャットワークに送る
  9. 毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送る
  10. 【Google Apps Script】天気予報をWeb APIで取得する方法
  11. 【GAS】JSON形式のデータを取り出してチャットワークに天気予報を送る

コメント

  1. […] 「GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信」 […]

タイトルとURLをコピーしました