LoginSignup
6
4

More than 3 years have passed since last update.

新しいSlackチャンネルに別チャンネルメンバーをまとめて招待する

Last updated at Posted at 2019-04-25

追記:最近のUPDATEでチャンネルへの一斉追加ができるようになりましたので、予め追加するユーザリストを持っている場合は下のような対応は不要です。

何を作ったのか?

数百人以上が入っているチャンネルを目的別に分けたかった。元のチャンネルのメンバーを新しいチャンネルにまとめて招待したい。
→手作業無理、/inviteコマンドも1ユーザごとしか使えないのでAPIで実装します。

できたやつ

APP(token)の作成

以下スコープを許可したAPPを作成、token(xoxp-XXXX)を習得しましょう。詳細割愛。

channels:read  #パブリックチャンネルに所属しているメンバー一覧を取得するため
channels:write #パブリックチャンネルにインバイトするため
groups:read    #プライベートチャンネルに所属しているメンバー一覧を取得するため
groups:write   #プライベートチャネルにインバイトするため

実行

以下XXXXXXにパラメータを入れ込んで実行しましょう。

※ channel_idとはチャンネル名ではなくブラウザで見た時のURLのCXXXXXの部分です。
※ limitはコピー元のユーザ数より大きい値で設定ください。

#!/bin/sh
slacktoken=XXXXXXXXX # set your token
channel_copy_from=XXXXXXXXX # set copy channel_id
channel_copy_to=XXXXXXXXX # set invite channel_id 
limit=700 # set number of members
members=`curl -H 'Content-Type: application/x-www-form-urlencoded' "https://slack.com/api/conversations.members" -d "token=$slacktoken&channel=$channel_copy_from&limit=$limit" | jq -r '.members[]'`
for u in $members; do
  echo Inviting user $u;
  curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' -i "https://slack.com/api/conversations.invite" -d "token=$slacktoken&channel=$channel_copy_to&users=$u";
  sleep 2;
done;

参考にさせていただいたサイト

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

6
4
0

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
6
4