LoginSignup
11
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-12-11

追記

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で作成しました)

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をもっといい感じにできるあなたもこっそり編集リクエストください
コメントでも可

11
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4