追記
2019年11月頃のアップデートで、まとめてInviteする口ができました
なのでこの記事はもう必要ありませんね。
現在の方法は公式サイトに載っていますので、こっちのほうがいいです。
https://slackhq.com/new-slack-features-invites-message-formatting?utm_source=whatsnew
経緯
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」を取得する方法
必要なライブラリを準備
スクリプトの実行には jq
が必要です。
jqのインストールをお願いします。
Macであれば brew install jq
でOK!
スクリプト
上記で取得したAPI tokenとinviteしたいchannel IDを適宜入れ替えます
members.txt
の中身はinviteしたいメンバーのメールアドレスを改行区切りで入力しておきます
(※これを手で入力するのは意味が無いので、APIから取得しましょう)
(※僕の場合はJiraのAPIで作成しました)
xxx@example.com
yyy@example.com
zzz@example.com
#!/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をもっといい感じにできるあなたもこっそり編集リクエストください
コメントでも可