![](https://rec.homegrowin.jp/wp-content/uploads/2023/01/25345891_s-230x143.jpg)
![](https://rec.homegrowin.jp/wp-content/uploads/2023/05/26539468_s-230x143.jpg)
![](https://rec.homegrowin.jp/wp-content/uploads/2023/01/25345891_s-230x143.jpg)
![](https://rec.homegrowin.jp/wp-content/uploads/2021/02/pms.jpg)
![](https://rec.homegrowin.jp/wp-content/uploads/2023/01/25345891_s-230x143.jpg)
BLOG
わっふぃ!!しまじろうです。
突然ですが、Slackのコマンドって使っていますか??
弊社でも、社内のコミュニケーションツールとして、slackが導入されました。
事務的な連絡や、イベント告知等々使われてはおりますがそこまで活発に利用されている印象がまだありません。
そこで、slackの利用を加速するためにも、独自のslash commandsを作って便利に使えたらいいなぁと思い立った次第です。
「コマンド打った時間を記録して出勤、退勤の時間を記録したい」
日付ごとに出勤時間、退勤時間を記録し、月が変われば新規のファイルを作成して追記、みたいなことをやってくれるコマンドがあれば便利かなーと思いました。
エクセルファイル的なものにどんどん追記していけないかなーと妄想。
コマンドがやるというより、「SlackからAPIをcallしてAPIにやらせる」が正しいですかね。。。
まずは、事前準備としてslack – APIの連携する大枠を作ってちゃんと動くよね?
って部分を確認したいと思います。
てな訳で、今回の目標は
1.Slack側でコマンドを実行
2.リクエストを受けレスポンスを返す
3.Slackでレスポンス結果を表示
ぐらいのものを目指します。
とりあえずは引数に指定した文字列をオウム返しさせるものを作ります。
slash commandsではHTTPSな環境が求められるので、自前でサーバを建てるなり、どっかしら借りるなどして下さい。
今回はGoogleが提供してくれるGoogle Apps Script (GAS:https://www.google.com/script/start/)をお借りします。無料です。
GASはJavaScriptをベースにしたサーバサイドなスクリプトです。
Googleアカウントがあればどなたでも利用可能です。
GASであれば、Googleドライブ上のスプレッドシートの操作もできちゃうので、最終的なやりたいことを実現できると思い採用しました。
・Googleアカウントを持っていなければ作成
・上記リンクにアクセス
・「start scripting」を押下してProjectの新規作成
・「新規スクリプト」を押下
すると、コードの編集画面が開かれます。
とりあえずサンプルを記載
function doPost(e) { var param = e.parameter.text; var response = { text: param }; return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON); }
コマンドから指定した引数のパラメータをそのままreturnするだけのメソッドになっています。
doPostと言う名前でメソッドを作成するとPOSTでのアクセスを受けれます。
→最終的にはスプレッドシートに書き込みに行く処理を実装する
→同様にdoGetでGETを受けることができます
上記で保存し、公開設定を行うと、アクセス用のURLが取得できます。
まずはこちらにアクセス:https://api.slack.com/apps
Appを作成していなければ新規作成
slash commandsとして下記を登録
・コマンドの文字列
・使い方
・ヒント
・リクエストURL:GASプロジェクト公開時のURL
あとはワークスペースへ公開するとコマンドが使えるようになる。
はず。。。
ちゃんとできました。
試した画像をGIfとかで出せたらよかったのですが、そんな技術はありませんでした。
GAS側の処理はもう少し調べる必要がありますが、手始めの準備としてはこんなところかなーという次第です。
続きの実装部分に関しては、また別記事であげようと思います。
将来的にはwordpressと連携してローカルで書いたテキストファイルとかをslash commandsに渡してブログ記事アップとかできないかなと妄想。。。