SlackAPIは色々あるっぽいですが、Slackからチャットでコマンドを作ることは簡単に。あとはGAS側は公開アプリケーションとしてDoPostで来るのでそこで処理して返すという設計になります。
Slack側の設定
Slash Commandsを使えば基本OK。
https://qiita.com/akibin/items/d7bda60b038890d770b7 が参考になりました。
SlackAPI設定画面はやや分かりづらかったのですが、
Features→Slash Commands→Create New Command
とかでいけます。ちなみにSpackAPIといってますが、ここではSlack Appというものを登録して使う感じですね。WorkspaceはSlackのワークスペースでテスト用に作っても良さそうです。
GAS側の設定
GASでWebアプリケーションを作っているならあまり問題はないのですが、とはいえはまりそうなところはいくつか。
- ウェブアプリケーションとして公開。Anyone,even anonymousにチェックをすること。(なぜか日本語化されてない)
- GASスクリプト修正で公開する時は、VersionをNewにすること。これしないと反映されないですね。
それくらいです。
あとGoogleスプレッドシートにあるデータを取得するとか、返すとかはわりとシンプルなのでそこはGASの話でふんばれって感じになります。
他のメモ
GASのDoPostとかDoGetの違いは?
例えばGET通信しているならDoGetでは?とか思ったのですが、多分そのとおりっぽいです。では、Slack側ではどこで設定するかですが、
2016年と古めですが、こちらではMethod指定があったようです。GETとかPOSTとか。
それが執筆時点ではないので、DoPostオンリーなのかもしれないですね。これはペンディングとしておきます。
作ってみて思ったこと
Slackからコマンドを出せることで特定の処理をさせるのは、まあ処理によりけりなんですがSlackを使っている人なら面白い感じですよね。
一方で、GASでやると簡単なことならいいのですが、複雑なことだとすると、デバッグが手間になるのでスプレッドシートに出すとかですかね、そこらへんで面倒ですね。地味にVersionのNewが面倒なので地味に体力を削ってきますね(笑)
あとはSlackをそこそこ使えて、GASを扱えるならいじれそうですが、GASをいじれるのレベル感とこれらのAPI設定とか手間でないこと、分かっていないと結構辛くて、その割にリターンがないってことになりそうですね。