「Slack App」と GAS で Slack にメッセージを投稿する
最近,「Slack App」と GAS で自分の日常生活を便利にするアプリを作っております.そのため現在は両者を勉強中で,その時に得た知見をまとめようと思います.
今回はメッセージを投稿するという基本となる機能についてまとめます.今までは「Incoming Webhook」をよく利用していましたが,チャンネル毎に Token を生成しないといけないため.設定次第では色々なチャンネルに投稿できる Bot の Token を利用できる Slack App を利用します.
やり方
完成イメージ
特定のチャンネルにユーザ名と絵文字をカスタマイズした状態でメッセージを送ります.こんな感じでメッセージが投稿されるイメージです.
Slack App の作成
Slack API のページから Slack App を作ってみましょう. api.slack.com
「Create New App」を押して,App Name と Slack のワークスペースを選択します.投稿したいワークスペースを選択することで作成することができます.
作成後,「App Home 」にある「App Display Name」 をの「Edit」を押し,「Display Name」と「Default username」を追加しましょう.この設定をしておかないとワークスペースに Slack App をインストールすることができないため注意です.
GAS を書く前に Slack App の設定変更
コードを書く前にchat.postMessage
の仕様を確認してみましょう.
何やら「autoship」という気になる項目があるので見てみます.
どうやらユーザ名とアイコンを設定したい場合はchat:write
に加えて,chat:write.customize
という「Scope」を追加する必要があることがわかります.
というわけで,Scope を設定しましょう
Scope を設定したら,「Install App for Workspace」でワークスペースにインストールし, Bot の Token を生成しましょう
ワークスペースにインストールすると「Bot User OAuth Access Token」が表示されるので,コピーします.
GAS を書いてみる
Google Drive にアクセスし,GAS のエディタ画面を開きましょう.今回は以下のような関数を作ります.
function postMessage() { const url = "https://slack.com/api/chat.postMessage"; // 投稿するチャンネルやメッセージ内容を入れる const payload = { "token" : "Bot User OAuth Access Token", "channel" : "random", "text" : "Slack App のテストだよ", "username": "Slack App", "icon_emoji": ":slack:" }; const params = { "method" : "post", "payload" : payload }; // Slackに投稿 UrlFetchApp.fetch(url, params); }
動かしてみる
投稿するチャンネルにインストールした Salck app を追加します.
実行する関数にpostMessage
を選択し,「▶」で実行します.
Slack を見てみると設定した内容でメッセージが投稿されていることがわかります.
まとめと所感
今回は「Slack App」と GAS で Slack にメッセージを投稿する方法についてまとめてみました.「Incoming Webhook」を使ったやり方の場合,従来のようなやり方で上手くいくと思いますが,今回ポイントになったのは作成した Slack App に chat:write.customize
という Scope を追加するところかなと思いました.
Slack は日々頻繁にアップデートしているので,Slack のアプリを作るときは公式のドキュメントを必ずチェックしなら進めるのがベストですね.
GAS は clasp という CLI ツールを使うと TypeScript が使えるようなので,作っているアプリの機能の実装が揃ってきたら勉強がてら挑戦します 💪💪