こんにちは!
今回は「GASでslack通知をDMとして送る方法」についてお伝えしたいと思います。
方法は3つほどありますが、botで送る方法がおすすめなので、そちらを紹介したいと思います。
Slack通知は便利なのですが、送り過ぎは嫌がられるので注意が必要ですね。笑
Contents
chat.postMessageを使ってbotユーザーからDMを送る
chat.postMessage
でユーザーIDを指定すると、botユーザーからDMとしてslackメッセージを送ることができます。
(厳密にはDMではないかもしれませんが、説明のためDMと書かせてもらってます)
イメージとしては、以下の画像のようにサードバー下部のApp>botでメッセージを確認することができます。
ちなみに、もう一つの方法であるIncoming Webhook
で送ると、ダイレクトメッセージ(DM)>自分自身に対して送られます。
自分自身のDMはメモ代わりに使ったりしている人もいるので、botから送ってあげた方が区別できるので親切だと思います。
1. slack apiのページにログインする
slack apiのページにアクセスします。
2. 画面右上のyour appsから編集権限を追加したいアプリを選択します
対象のアプリを選択します。
3. サイドバーからAuth & Permissionsを選択し、Scopesに「chat:write」と入力して追加
選択すると、Scopesの一覧に「chat:write」が追加されると思います。
4. 同じくAuth & Permissionsを選択し、Auth Tokens for Your Workspaceからtokenを追加
Auth Tokensがまだ生成されていない場合、新規で追加する必要があります。
Auth Tokens for Your Workspaceの「install to Workspace」をクリックします。
クリックすると別画面に遷移しますが、許可を選択します。
tokenが生成されていればOKです。(トークンは後ほど使います)
5. GASを修正
const sendSlack = (message, userId) => {
console.log('slack send start');
const authToken = 'xoxb-xxxxxxxxxxxx'; // 生成したtokenを設定
const postUrl = "https://slack.com/api/chat.postMessage";
const payload = {
"token" : authToken,
"channel": userId, // 送信先を設定
"text" : message,
};
const options = {
"method" : "post",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
console.log('slack send end');
}
sendSlack('test msg', 'ABCD1234'); // 第2引数にはslackのuserIdを設定する
実行すれば、設定したuserIdに対して、DMでメッセージが送信されます。
以上、お疲れさまでした〜🍵