Invite multiple members to slack channel(slackで複数人まとめてinviteする)


経緯

slackで100人位まとめてinviteしたいときどうしますか??

/invite @daresore1 @daresore2

って打っても残念ながら先頭の人しかinviteできません。


前提


  • inviteしたいユーザーのemailアドレスのリストがあること

  • slackのWeb APIが使えること

何かしらの自動的な手段でemailアドレスのリストが作れない方は、効率的ではないので、

諦めて一人ずつ/inviteを叩いたほうが良いと思います


実際の手順


slack API アクセストークンを取得とスコープの設定

こちらを参考にアクセストークンを取得してください

Slack API 推奨Tokenについて

スコープは以下の3つが必要です


  • channels:write

  • users:read

  • users:read.email


inviteしたいchannelのIDを取得

こちらを参考にchannel IDを取得してください

Slack — APIに使う「チャンネルID」を取得する方法


スクリプト

上記で取得したAPI tokenとinviteしたいchannel IDを適宜入れ替えます

members.txt の中身はinviteしたいメンバーのメールアドレスを改行区切りで入力しておきます

(※これを手で入力するのは意味が無いので、APIから取得しましょう)

(※僕の場合はJiraのAPIで作成しました)


members.txt

xxx@example.com

yyy@example.com
zzz@example.com


bulk_invite.sh

#!/bin/sh

slacktoken=xoxp-NNNNNNNNNNN-NNNNNNNNNNNN-NNNNNNNNNN-XXXXXXXXXXXXXXXXXXXXXX
channel=XXXYYYZZZ
members=`cat $1`
for u in $members; do
echo Inviting user $u;
slack_user_id=`curl -H 'Content-Type: application/x-www-form-urlencoded' "https://slack.com/api/users.lookupByEmail" -d "token=$slacktoken&email=$u" | jq -r '.user.id'`
curl -X POST -H "Authorization: Bearer $slacktoken" -H 'Content-Type: application/x-www-form-urlencoded' -i "https://slack.com/api/channels.invite" -d "channel=$channel&user=$slack_user_id";
sleep 2;
done;

$ sh bulk_invite.sh members.txt


おわりに

間違いなどに気づいたあなたはこっそり編集リクエストください。

shell scriptをもっといい感じにできるあなたもこっそり編集リクエストください

コメントでも可