見出し画像

[GAS][slack]営業日カウントダウンbotを作った。いったんまとめ。

前書き

GASでだいだい出来たので、作り方や注意などをまとめておく。
細かく書くとキリが無いのでダイジェスト版として。
今回のbotは、スプレッドシートで計算した残営業日を取得し、それをslackで通知する、という仕組みになっている。
いろいろ不具合やスマートでないところもあると思うので、お気づきの点はコメントいただければ幸いです。

今回はGASで作ったが、zapier でも出来るし、下記の通りslack botアプリ「Callie」もある。zapier については、また後でまとめる。

zapier

https://note.com/0375/n/n6bdeb3ca0853


Callie, a countdown bot for Slack

https://callie-corgi.herokuapp.com/


GitHub

コードを見たい人はこちらをどうぞ。

https://github.com/ymgcmnk/RemainingBusinessDaysCountdown-NotificationSlackBot/blob/main/README.md

作成手順

  1. スプレッドシートを用意し、残りの営業日を計算する。

  2. slack Appを作成する。

  3. GASを書く。


1.スプレッドシートを用意し、残りの営業日を計算する。

スプレッドシートでは、大まかに下記の2工程。

1-1.祝日リストを作る
1-2.残り営業日を計算する。

1-1.祝日リストを作る

営業日を計算するために、祝日リストを用意する。
簡単に作るなら、内閣府のサイトからデータ持ってきてコピペすれば良い。内閣府のサイトにはCSVもある。
毎年コピペが面倒なら、GAS組んで自動更新しても良い。

内閣府

GASで祝日の参考


1-2.残り営業日を計算する。

こんな感じで計算します。今月の残り営業日数の計算結果、今日が4月29日で-1になってるな〜、うーん、まいっかあ。。。


営業日の計算はこの辺りを参考にした。


2.slack Appを作成する。

https://api.slack.com/ から作れば良い。日本語ブログはいろいろあるが、公式も見た方がいい。

https://api.slack.com/tutorials/tracks/scheduling-messages

上記の説明から、簡単にいうと、
1.create an app,
2.give it some permission scopes,
3.install it to a suitable development workspace.
と、いうことになる。

1.create an app

https://api.slack.com/tutorials/tracks/scheduling-messages

上記の「create an app」をクリックすると、下記のリンク先に遷移する。https://api.slack.com/apps?new_app=1&track=scheduling-messages
そして、下記のような画面になる。

基本的に From scratch で作成していけば良いんでは無いかと思う。From an app manifestBETA はやったことないな、今度やってみたい。

名前を入力して、ワークスペースを選べば、Create Appできる。

2.give it some permission scopes

https://api.slack.com/tutorials/tracks/scheduling-messages

なんやかんやと説明があって、

  1. Head over to app config page for your app.

  2. Navigate to the OAuth & Permissions page.

  3. Scroll down to the Bot Token Scopes section.

  4. Click Add an OAuth Scope.

  5. Add the scopes listed above.

「OAuth & Permissions」でスコープ設定しようね、ってことだ。

左カラムのメニューから「OAuth & Permissions」を選択
今回はbotとしてメッセージを書くのでwrite と途中まで打つとサジェストされる。


えーと、今回の botのスコープどうしてたっけ、あ、これ、ちょっと整理しないとな。

権限については、こちらの記事も参照した。


3.install it to a suitable development workspace

https://api.slack.com/tutorials/tracks/scheduling-messages

ここはそんな難しくないですね。


3.GASを書く。

コードはGitHubにまとめた。今回はクラス化を頑張った。


謝辞

本件の作成にあたって、ノンプロ研およびTwitterの皆様に大変お世話になりました。深く御礼申し上げます。

作成中のnote

作成中のメモ、自分の考えの整理としてnote書いてた。

#GAS
#Slack
#bot
#ノンプロ研


いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!