名称未設定

約30分+コピペで完成!Slackで一日の振り返りを自動でメンション&収集する習慣化システムの構築

この記事で何がわかるのか

Slackで指定時間にGoogle フォームをメンション付きで投げて、毎日の振り返りの習慣化を可能にします。

完成形

はじめに

ツイッターを眺めていて、流れてきたデイリーで仕事の振り返りをする話をみて、インスピレーションを得た。
毎日特定の時間に、自分のSlackチャンネルに、Googleフォームを投稿するbotを作れば、習慣化につながるのではないかと思ったのでシステムを作ることにした。

なぜ記録が良い影響を及ぼすのか

以前私は、「超ストレス解消法 イライラが一瞬で消える100の科学的メソッド」で紹介されていた

初心者にまずおすすめなのが、「シンプル・ソート・レコード」です。3つのコラムで構成されたシートで、なにか大きなストレスを感じたら、その時にどんな思考が頭に浮かんだかを記録していきます。(p55より引用)
書き込む内容は
状況:あなたにストレスを与えた人、場所、時間等を書き込みます。
感情:ストレスを感じた時に、どんな勘定を抱いたかを書き込んで、それぞれの割合をパーセントで採点します。
思考またはイメージ:ストレスを感じた時に、どんな思考やイメージが頭に浮かんだかを書き込みます。(p55~p56より引用)
「シンプル・ソート・レコード」は、自動的に浮かぶ思考を意識するための基本的なトレーニングです。(p56より引用)
記録する期間は最低でも14日間。この作業を続けると、少しずつ自分の思考のアンバランスがわかるようになってきます。(p57より引用)

習慣化への課題

私は割と、ストレスを抱えがちで、考え方や物のみかたに偏りがある思考がアンバランスの状態が続いていて、スプレットシートに記録しようとしていたが3日間も続かなかった。

この本によると、毎日記録していくと、自分の考え方や思考の歪みに気がつくということだ。デイリーで振り返りをする習慣をつけると、自分の精神力にも良い影響を与えられそうということはわかったが、とにかく習慣化が難しい・・・・。スプレッドシートを開くというのがめんどくさすぎたというのがある。

解決方法

毎日使っているSlackに自分にメンションをつけて、仕事終わりの時間に振り返りシートとなるGoogleフォームのリンクを送りつければ習慣化につながるのではないかと考えた。

実装方法

前置き
私は以前会社のSlackで個人的にSlack botを作っていて、#generalに誤爆したことがあるので、会社のSlackに導入するなら一度自分のSlackワークスペースを作ってから導入することをオススメする(小声)。

手順1: Slack Appの設定とトークンの発行
下記をクリック

自分のワークスペースにサインインしてない場合はサインインしてください。

未ログイン状態_2

サインインされている状態だとこんな感じの画面だと思います。ここで「Create New App」をクリックしてください。

サインインされている状態_3

「Create New App」をクリックすると下記のポップアップが出てくるので
App Nameに適当に名前をつけて、アプリを入れたいワークスペースを選択してください。終わったら右下の緑色のボタンをおして「Create App」してください。

アプリを作成_4

次の画面はBasic Informationです。今回はBotを作るのでBotをせんたくしてください。

アプリを作った直後1_4

この画面に飛ばされるはずなので、「Add a Bot User」を選択してください。

アプリを作った直後2_5

ここも下記のように適当に埋めてください。

アプリを作った直後3_6

次に左カラムのSettingsの中のBasic Informationに戻ると一番上の項目のAdd features and functionalityにチェックマークがついているはずです。

画像8

次にInstall your app to your workspaceをクリックしてください。

権限を与える_8

Basic Informationを確認すると Install your app to your workspaceにチェックマークがついています。

画像10

OAuth&PermissionsでBot User OAuth Access Tokenを確認します。
今回使うのはこのトークンです。自分以外に知られないようにしましょう。

トークン発行_10

手順2: Googleフォームの作成
次にGoogleフォームを用意します。
Googleドライブから左の+ボタンを押し、その他>Googleフォームで遷移します。

フォームを作成_11

自分の記録したいことを適当に書いてください。

フォーム作成2_12

フォームを作り終わったら右上の紫の保存ボタンを押すと下記のようなポップアップが出現します。この中のリンクを使います。

フォームを作成3_13

手順3:Google App Scriptを作る
最後に
Google App ScriptからSlackのchat.postMessage APIを叩きます。
まずはファイルを作成します。
Googleドライブから左の+ボタンを押し、その他>Google App Scriptで遷移します。

GASを作成1_14

スクリプトを記入します。下記コードをコピペしてください。

GASを作成2_15

function myFunction() {
 //SLACK_ACCESS_TOKENにアクセストークンをいれてる
 var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');

 var slackApp = SlackApp.create(token); //SlackApp インスタンスの取得

 var options = {
   channelId: "#test-bot", //チャンネル名 私は今回#test-botというチャンネルを作成しました。自分で通知したいチャンネルを設定してください
   userName: "今日の振り返り", //投稿するbotの名前
   message: "@{user_id} 今日の振り返りをしましょう!→ https://forms.gle/xxxxxxxxxxxxxxxx " //投稿するGoogleフォームのURLをいれる
 };

 slackApp.postMessage(options.channelId, options.message, {username: options.userName});
}

SLACK_ACCESS_TOKENを設定する
ファイルからプロジェクトのプロパティをクリックします

アクセストークン設定1_16

プロジェクトのプロパティが出てくるので、その中のスクリプトのプロパティをクリックして行を追加ボタンを押してください。

アクセストークン設定2_17

プロパティに「SLACK_ACCESS_TOKEN」値にSlack Appを作った時に発行されたアクセストークン「xoxb-xxxxxxxxxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxx」をいれる。(アクセストークンはそれぞれ違うので確認して下さい)

アクセストークン設定3_18

Slack APIに特化したライブラリを入れる
リソース>ライブラリをクリック

ライブラリ導入1_19

SlackAppのLibrary Key 「M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO」を下部に入れてください。

ライブラリ導入2_20

タイトルにSalckAppと出てくるのでバージョン指定で最新を選択して下さい。この記事を書いた当時は22が最新でした。

ライブラリ導入3_21

スクリプトの実行
いよいよGoogle App Scriptの三角ボタン▶を押します。
押すと下記のようなポップアップが出るので、


権限を確認1_22

権限を確認2_23

権限を確認3_22

権限を確認4_23

ここでおそらく指定したチャンネルにbotから通知が飛ぶはずです。

完成形_1

定期的に実行させる

毎日18時に定期的にbotに動いてもらうにはGoogle App Scriptをうごかす18時のトリガーをつければ大丈夫です。下記のように設定します。

定期実行_25

定期実行_26

自分にメンションを飛ばしたい
自分にメンションを飛ばす場合はSlackのuserIDが必要です。たとえばSlackのuserIDが「mmm111」だった場合は下記のように設定してください

message: "<@mmm111> 今日の振り返りをしましょう!→ https://forms.gle/pJmagtEeF9oUXKnV7 " //メンションをつける人<@userID>と投稿するメッセージを記入

SlackのuserIDはどこでわかるのか
アカウントを設定の中の一番下のユーザ名の項目に隠されています。

userIDの調べ方_27

アカウントIDの調べ方

使用感

Slackに送られてくるリンクを踏むとこんなかんじになります。

スクリーンショット 2019-12-02 23.25.25

スプレッドシートにもタイムスタンプが自動で振られていい感じに集計されています。

スクリーンショット 2019-12-02 23.26.34


これで習慣化ができるはず
自分の精神力もきっと安定するだろうしいい事ずくめになればいいな!

参考文献

公式Slack APIのドキュメント
初心者がGASでSlack Botをつくってみた
メンションの飛ばし方がわからなかったのでこちらをヒントにしました
Slack APIでユーザー宛のメンションができなくなったので対策した



エンジニアとして働いている成長記録やおもしろいと思ったこと色々書いていこうとおもいます 頂いたご支援は、資料や勉強のための本、次のネタのための資金にし、さらに面白いことを発信するために使います 応援おねがいします