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チャンネルに対して一気にメッセージを送れるようになって本当に便利。
もっと早く作っておけば良かったなぁ。


