約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の設定とトークンの発行
下記をクリック
自分のワークスペースにサインインしてない場合はサインインしてください。
サインインされている状態だとこんな感じの画面だと思います。ここで「Create New App」をクリックしてください。
「Create New App」をクリックすると下記のポップアップが出てくるので
App Nameに適当に名前をつけて、アプリを入れたいワークスペースを選択してください。終わったら右下の緑色のボタンをおして「Create App」してください。
次の画面はBasic Informationです。今回はBotを作るのでBotをせんたくしてください。
この画面に飛ばされるはずなので、「Add a Bot User」を選択してください。
ここも下記のように適当に埋めてください。
次に左カラムのSettingsの中のBasic Informationに戻ると一番上の項目のAdd features and functionalityにチェックマークがついているはずです。
次にInstall your app to your workspaceをクリックしてください。
Basic Informationを確認すると Install your app to your workspaceにチェックマークがついています。
OAuth&PermissionsでBot User OAuth Access Tokenを確認します。
今回使うのはこのトークンです。自分以外に知られないようにしましょう。
手順2: Googleフォームの作成
次にGoogleフォームを用意します。
Googleドライブから左の+ボタンを押し、その他>Googleフォームで遷移します。
自分の記録したいことを適当に書いてください。
フォームを作り終わったら右上の紫の保存ボタンを押すと下記のようなポップアップが出現します。この中のリンクを使います。
手順3:Google App Scriptを作る
最後にGoogle App ScriptからSlackのchat.postMessage APIを叩きます。
まずはファイルを作成します。
Googleドライブから左の+ボタンを押し、その他>Google App Scriptで遷移します。
スクリプトを記入します。下記コードをコピペしてください。
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を設定する
ファイルからプロジェクトのプロパティをクリックします
プロジェクトのプロパティが出てくるので、その中のスクリプトのプロパティをクリックして行を追加ボタンを押してください。
プロパティに「SLACK_ACCESS_TOKEN」値にSlack Appを作った時に発行されたアクセストークン「xoxb-xxxxxxxxxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxx」をいれる。(アクセストークンはそれぞれ違うので確認して下さい)
Slack APIに特化したライブラリを入れる
リソース>ライブラリをクリック
SlackAppのLibrary Key 「M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO」を下部に入れてください。
タイトルにSalckAppと出てくるのでバージョン指定で最新を選択して下さい。この記事を書いた当時は22が最新でした。
スクリプトの実行
いよいよGoogle App Scriptの三角ボタン▶を押します。
押すと下記のようなポップアップが出るので、
ここでおそらく指定したチャンネルにbotから通知が飛ぶはずです。
定期的に実行させる
毎日18時に定期的にbotに動いてもらうにはGoogle App Scriptをうごかす18時のトリガーをつければ大丈夫です。下記のように設定します。
自分にメンションを飛ばしたい
自分にメンションを飛ばす場合はSlackのuserIDが必要です。たとえばSlackのuserIDが「mmm111」だった場合は下記のように設定してください
message: "<@mmm111> 今日の振り返りをしましょう!→ https://forms.gle/pJmagtEeF9oUXKnV7 " //メンションをつける人<@userID>と投稿するメッセージを記入
SlackのuserIDはどこでわかるのか
アカウントを設定の中の一番下のユーザ名の項目に隠されています。
使用感
Slackに送られてくるリンクを踏むとこんなかんじになります。
スプレッドシートにもタイムスタンプが自動で振られていい感じに集計されています。
これで習慣化ができるはず。
自分の精神力もきっと安定するだろうしいい事ずくめになればいいな!
参考文献
公式Slack APIのドキュメント
初心者がGASでSlack Botをつくってみた
メンションの飛ばし方がわからなかったのでこちらをヒントにしました
Slack APIでユーザー宛のメンションができなくなったので対策した
エンジニアとして働いている成長記録やおもしろいと思ったこと色々書いていこうとおもいます 頂いたご支援は、資料や勉強のための本、次のネタのための資金にし、さらに面白いことを発信するために使います 応援おねがいします