この記事では、GASとSlackAppを使って、botユーザーから指定ユーザー宛にDM送信する方法を紹介します。
本記事はノンプログラマーのためのスキルアップ研究会『ノンプロ研 Advent Calendar 2020』10日目の記事です。
スポンサーリンク
SlackAppでユーザー宛にDMを送信する
前提:SlackAppの作成と、ワークスペースへのインストールが完了していること
DM送信するユーザーの「メンバーID」を確認
Slackの各ユーザーには、一意の「メンバーID」が割り当てられています。DMの送信先(宛先)にメンバーIDを指定するので、これを確認しておきましょう。
自分以外の他ユーザーのメンバーIDも、上記と同じ手順で確認できます。
【参考】ワークスペース内のユーザー名とメンバーIDの一覧を取得する方法はこちら
【GAS×SlackAPI】ワークスペースのユーザー名とIDをスプレッドシートに取得するGASでSlackAPIを操作して、ワークスペースのユーザーリスト(ユーザー名とID)を取得する方法を紹介します。...
OAuth & Permissionsの設定
SlackAPIのappページで必要情報を取得・設定します。Your Apps(https://api.slack.com/apps/)
①tokenの取得
OAuth & Permissionsのページでtokenをコピーします。
②scopeの設定
「Add an OAuth Scope」をクリックして、下記2つを追加します。
- chat:write(https://api.slack.com/scopes/chat:write)
- im:write(https://api.slack.com/scopes/im:write)
③メソッドの確認
- ①「メンバーID」から「チャンネルID」を取得するメソッド:conversations.open
- ②指定の「チャンネルID」にメッセージを送信するメソッド:chat.postMessage
指定ユーザー宛にDMを送信
変数slack_app_tokenの値を設定し、スクリプトを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
const slack_app_token = "xoxb-********************"; //botからDMを送る function postDM() { const message = "これはテストメッセージです"; //【処理1】DMを開き、チャンネルIDを取得する const member_id = "UQCU7GSQ6"; //メンバーIDを指定 const channel_id = getChannelID_(member_id); //【処理2】指定の[チャンネルID]にDMを送信する const message_options = { "method" : "post", "contentType": "application/x-www-form-urlencoded", "payload" : { "token": slack_app_token, "channel": channel_id, "text": message } }; //必要scope = chat:write const message_url = 'https://slack.com/api/chat.postMessage'; UrlFetchApp.fetch(message_url, message_options); } /** * メンバーIDを受け取りチャンネルIDを返す * * @param {string} メンバーID * @return {string} チャンネルID */ function getChannelID_(member_id) { const options = { "method" : "post", "contentType": "application/x-www-form-urlencoded", "payload" : { "token": slack_app_token, "users": member_id } } //必要scope = im:write const url = 'https://slack.com/api/conversations.open'; const response = UrlFetchApp.fetch(url, options); const obj = JSON.parse(response); console.log(obj); return obj.channel.id; } |
SlackAppからDMが届きました。
スポンサーリンク
スポンサーリンク