【GAS】Slackの複数チャンネルへメッセージを送信するアプリを作る | Pharma Lab

【GAS】Slackの複数チャンネルへメッセージを送信するアプリを作る

Engineering
この記事を書いた人

オンライン薬局の開発・運営をするPharmaXで薬剤師兼エンジニアとして働いています。Rails・React・TypeScriptなどを書きます。英語が得意でTOEIC900点・通訳案内士資格取得。ブログのメインテーマは薬剤師の働き方やプログラミング、英語学習ですが、その時に書きたいなと思ったことも書いています。
>> 詳しいプロフィール

Tomoyuki Katoをフォローする

 

Slackの複数チャンネルにメッセージを一斉送信したいというユースケースができてきたので、GASでSlackアプリを作ったので、どのように作ったかをメモ書きしておく。

 

Slackの下準備

GASでコードを書く前に、Slackでいくつか設定しなければいけないことがある。

 

1:Slackアプリを作成する

最初にSlack APIのページにアクセスして、Slackアプリを作成する。

 

まず、右上の方に「Create New App」というボタンがあるのでそれを押す。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

次に「From scratch」を選択。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

そして「アプリの名前」「どのワークスペースでアプリを使うか」を選択する。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

2:パーミッションの設定をする

次にSlackアプリでができる権限を決める設定をする。

まず「OAuth & Permissons」を選択。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

Scopesの「Add an OAuth Scope」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

そして以下3つの権限を付与する。

  • chat:write
    • チャットへの書き込み権限
  • chat:write.public
    • パブリックチャンネルに許可なしで書き込める権限
  • chat:write.customize
    • アプリのアイコンや表示名を変更す権限

 

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

3:Slack botをインストールする

次にSlack botをインストールする。

 

まずサイドバーの「App Home」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

「Edit」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

「Display Name(botの名前)」「Default username(@xxxxで表示される名前)」を入力して、「Save」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

Slackアプリのアイコンを設定する場合は、「Basic Information」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

「Add App Icon」をクリックし、画像をアップロード。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

次にをクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

「Allow」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

最後にGASで使用するSlack APIのトークンを取得する。

「Bot User OAuth Token」に表示されている黒塗りの横の「Copy」ボタンをクリックして、このトークンをどこかに保存しておく。

 

Slackのチャンネルにメッセージを送信するGASアプリの作り方

これでSlack周りの下準備は終わり。

 

Slackの複数チャンネルへメッセージを送信するGASの書き方

 

Slackの下準備が終わったら、いよいよGASを書いていく。

 

1:GASでSlack APIを使うためのライブラリをインストールする

「ライブラリ」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

「スクリプト ID」を入力する。

 

SlackライブラリのスクリプトIDは↓なので、これをコピペして検索すれば良い。

1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

「追加」をクリック。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

サイドバーに「SlackApp」と表示されていたら成功。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

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を取得するには、チャンネル名を右クリックして「コピー」を押し、「リンクをコピー」をクリックする。

Slackのチャンネルにメッセージを送信するGASアプリの作り方
Slackのチャンネルにメッセージを送信するGASアプリの作り方

 

そうすると、以下のようなURLがコピーされる。

この太字になっているのがチャンネルIDだ。

https://xxxxxxx.slack.com/archives/C03P54T335H

投稿したいチャンネルのIDを先ほどのコードに書いて、「実行」を押すと、指定されたSlackチャンネルにメッセージが送信される。

Slackのチャンネルにメッセージを送信するGASアプリの作り方

プライベートチャンネルには投稿されないので注意

ちなみにパブリックなSlackチャンネルにはメッセージを送信できるけど、プライベートチャンネルには投稿できないので注意してほしい。

 

プライベートチャンネルにもメッセージを投稿したい場合は、今回作ったアプリをプライベートチャンネルのグループメンバーとして招待すれば良い。

 

アプリを招待した上でchannelIdsにそのSlackチャンネルのIDを追加しておけば、メッセージを送信することができる。

 

終わりに

複数のSlackチャンネルに対して一気にメッセージを送れるようになって本当に便利。

もっと早く作っておけば良かったなぁ。

タイトルとURLをコピーしました