Slackの複数チャンネルにメッセージを一斉送信したいというユースケースができてきたので、GASでSlackアプリを作ったので、どのように作ったかをメモ書きしておく。
Slackの下準備
GASでコードを書く前に、Slackでいくつか設定しなければいけないことがある。
1:Slackアプリを作成する
最初にSlack APIのページにアクセスして、Slackアプリを作成する。
まず、右上の方に「Create New App」というボタンがあるのでそれを押す。
次に「From scratch」を選択。
そして「アプリの名前」、「どのワークスペースでアプリを使うか」を選択する。
2:パーミッションの設定をする
次にSlackアプリでができる権限を決める設定をする。
まず「OAuth & Permissons」を選択。
Scopesの「Add an OAuth Scope」をクリック。
そして以下3つの権限を付与する。
- chat:write
- チャットへの書き込み権限
- chat:write.public
- パブリックチャンネルに許可なしで書き込める権限
- chat:write.customize
- アプリのアイコンや表示名を変更す権限
3:Slack botをインストールする
次にSlack botをインストールする。
まずサイドバーの「App Home」をクリック。
「Edit」をクリック。
「Display Name(botの名前)」と「Default username(@xxxxで表示される名前)」を入力して、「Save」をクリック。
Slackアプリのアイコンを設定する場合は、「Basic Information」をクリック。
「Add App Icon」をクリックし、画像をアップロード。
次にをクリック。
「Allow」をクリック。
最後にGASで使用するSlack APIのトークンを取得する。
「Bot User OAuth Token」に表示されている黒塗りの横の「Copy」ボタンをクリックして、このトークンをどこかに保存しておく。
これでSlack周りの下準備は終わり。
Slackの複数チャンネルへメッセージを送信するGASの書き方
Slackの下準備が終わったら、いよいよGASを書いていく。
1:GASでSlack APIを使うためのライブラリをインストールする
「ライブラリ」をクリック。
「スクリプト ID」を入力する。
SlackライブラリのスクリプトIDは↓なので、これをコピペして検索すれば良い。
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
「追加」をクリック。
サイドバーに「SlackApp」と表示されていたら成功。
2:コードを書く
次にコードを書く。
基本的には↓のコードをコピペすればOKだ。
ただし、以下の3つだけは自分のものに置き換えてほしい。
- your-slackToken(下準備で作ったtoken)
- 投稿するチャンネルのID(channelds)
- message
function sendMessagesToSlack() { const slackToken = 'your-slackToken'; const slackApp = SlackApp.create(slackToken); const channelIds = [ "xxxxxxxxxxx", //チャンネル1 "xxxxxxxxxxx", //チャンネル2 "xxxxxxxxxxx", //チャンネル3 "xxxxxxxxxxx", //チャンネル4 "xxxxxxxxxxx", //チャンネル5 "xxxxxxxxxxx", //チャンネル6 "xxxxxxxxxxx", //チャンネル7 "xxxxxxxxxxx", //チャンネル8 "xxxxxxxxxxx", //チャンネル9 ]; const message ="送りたいメッセージ"; channelIds.forEach((channelId) => { slackApp.postMessage(channelId, message); } ) }
ちなみに投稿するSlackチャンネルのIDを取得するには、チャンネル名を右クリックして「コピー」を押し、「リンクをコピー」をクリックする。
そうすると、以下のようなURLがコピーされる。
この太字になっているのがチャンネルIDだ。
https://xxxxxxx.slack.com/archives/C03P54T335H
投稿したいチャンネルのIDを先ほどのコードに書いて、「実行」を押すと、指定されたSlackチャンネルにメッセージが送信される。
プライベートチャンネルには投稿されないので注意
ちなみにパブリックなSlackチャンネルにはメッセージを送信できるけど、プライベートチャンネルには投稿できないので注意してほしい。
プライベートチャンネルにもメッセージを投稿したい場合は、今回作ったアプリをプライベートチャンネルのグループメンバーとして招待すれば良い。
アプリを招待した上でchannelIdsにそのSlackチャンネルのIDを追加しておけば、メッセージを送信することができる。
終わりに
複数のSlackチャンネルに対して一気にメッセージを送れるようになって本当に便利。
もっと早く作っておけば良かったなぁ。