GoogleAnalytics等の情報をSpreadsheetを使って毎日Slackに自動投稿(非エンジニア向けだよ!)

とにかくあらゆる運用タスクは自動化したい、30分でできることを3分でできるようにするために3時間かけたいガール←の私が使っている、デイリーレポートをSpreadSheetからSlackに自動投稿させる方法を共有します。非エンジニアで、GoogleAppScriptはバリバリにかけないけどエクセル&スプシならそこそこ使いこなせるよ!って人向きです。

投稿されるSlackのイメージ(スプシのとあるセルの情報がまるっと投稿されます)

これはAnalyticsから取得したこのブログの前日の流入元別アクセスユーザー数と、それぞれの直近1週間の平均との比較(%)、前日のページ別ユーザー数を吐き出した例です。※数字は適当

前提

Spreadsheetから毎日自動でSlackに投稿するために、Spreadsheetのデータが毎日更新されている必要があります。私はAnalyticsのデータとSearchConsoleのデータをSpreadsheetに毎日自動取得して、みんなで共有するレポートを作っています。(Analyticsを使い慣れない職種の人でも見てほしい数字がすぐに分かるので便利です)

今回はSpreadsheetからSlackに投稿することをメインにまとめてるので、AnalyticsやSearchConsoleからの取得方法はまた別の機会に。(この辺は検索すればいくらでも出てきます)

Statsbotは使わない

AnalyticsのSlack通知で検索するとよく出てくるのが、Statsbotです。が、私はあえてこれを使わずにSpreadsheetを使っています。理由はローカルのデータと組み合わせたいから。単純に前日のPVとかUUとかだけならStatbotでいいんだけど、Spreadsheetなら目標に対しての進捗がどれくらいだとか、サービスのDBとも連携(redashを使えばね!)できるので分析できる幅がめちゃ広がる!

GASはシンプルに15行をコピペするだけ!

私が利用させてもらったコードはこちらのブログで紹介されているもので、分かりやすく解説されているので途中まではこちらのブログに従ってコードを貼り付けます。このスクリプトはすごくシンプルで「Slack投稿用」という名前のシートのA2のセルをSlackに投稿するよ、というものです。

GoogleSpreadSheetの内容をSlackで自動投稿する – ミネムラ珈琲ブログ
先週逃げられたbotだけど、一時的なサボりだったようで、月曜日には問題なく出勤してきた。検証してみたけど、一時的な通信障害か何かだったらしい。 www.minemura-coffee.com そういうわけでSlackでSpreadsheetsの内容を呟くbotのレシピを書く。内容は非エンジニア向け、GoogleAnalyticsやWEB広告の数値を追っている人、広告運用者、マーケター向け。 Slack incoming Webhooksの準備 まず、slackのAPIページから、incoming Webhooksの設定をします。2ステップで終わります。 Slackにログインしているブラウザで下…
  1. Slack incoming Webhooksの準備する
  2. GoogleSpreadsheetとGoogle App Scriptの準備
  3. スクリプトエディタでリンク先のコードを貼る
    • 2行目と15行目に、それぞれスプレッドシートのURLの一部(ID部分)とSlackのwebhooksのURLを記載する
  4. 実行
  5. ここからは以下へ

実行すると最初は許可を求められます。許可を確認すると、今度はセキュリティ警告がでます。

すごく不安になるメッセージを投げかけられますが、ひるまずに「詳細」をクリックして「安全ではないページに移動」してください。

承認フローが終わったら、Spreadsheetの「Slack投稿用」シートのA2がSlackに投稿されているか確認!投稿されていなかったら再度↑のブログの通り手順を踏んで確認を。

Slackへの投稿内容のアレンジはSpreadsheet側でごにょごにょする!

GASを使ったSlack投稿の例だとSlack投稿内容をアレンジするためにGoogleAppScriptをごにょごにょするんですが、非エンジニアにはここがハードル高いので、GASはもういじらずに、出力したいものをスプレッドシート側でごにょごにょして投稿用のA2のセルに固めます。こんな感じ

これなら、Spreadsheetの関数を使いこなせばA2セルに必要な情報を全部詰め込む事ができます!

ここで、私が使っている役立つ関数をいくつか紹介しておきます。

=CONCATENATE()文字列を結合する!

Slackに投稿したいものをA2に集めるために、A2に関数をずらずら書くと見づらいので、B列で準備をします。B列にある文字列を結合させるのがCONCATENATE()です。↑の図のようにまずB列のA〜EがA2セルに結合されました。

B列はそれぞれ関数を組み合わせて投稿したい構成にします。こんな感じ↓

Spreadsheetセル内の関数を改行するのはChar(10)だ!

ただセルを結合しただけだと改行がなくて見づらいので改行します。B列が改行されればそれを結合しているA2も改行されます。

  • 関数でなければ文字列セルとして改行する→[Cmnd]+[Option]+Enterでセルを改行する
  • 関数の場合はchar(10)が改行なので、改行位置に追加する(&でくっつける)

文字列と関数をつなげたい場合は&でつなげる

参照セル&”文字列”&参照セル&char(10) みたいに文字列や参照セルや関数は&でつなげます。文字列は””で囲うのを忘れずに。

数字は3桁でカンマ区切りにする

4桁以上の数字はカンマ入っていないとモヤモヤするタイプなので、必ずカンマ区切りにします。上の例で「2664」の数字がカンマ区切りになっていなくて気持ち悪いので、以下のようにtext(参照セル,”#,##”)でカンマ区切りに変換。

↓こんな感じでB列に投稿したい内容を作っていきます。

私が使ってるシートをサンプル用にしたものを貼っときます。(加工して使う場合はコピーして使ってください!)

TODAY()のタイムゾーン設定

毎日の数字を取得するためには、TODAY関数が不可欠。で、Spreadsheetのデフォルト設定そのままだとタイムゾーンが日本じゃないところにいってるので、TODAY()が9時間ずれます。なので、[ファイル]>[スプレッドシートの設定]から、タイムゾーンをTOKYOに変更!

GoogleAppScriptを毎日自動実行するタイマーを設定

スクリプトエディタのタイマーボタンを押してトリガーを追加。好きなタイミングを設定します。

これで完了!これなら、スプレッドシート関数力だけでSlackに投稿する内容をいろいろアレンジできて応用がききます。気が向いたらSearchConsoleからデータ取得するやつも書こっかな。