スラックチャネルの名前を考えると、そのチャネルのすべてのメンバーの電子メールのリストを取得する方法はありますか? slack apiのドキュメントを調べてみましたが、これを実現するために必要なメソッドが見つかりませんでした( https://api.slack.com/methods )。
必要なスコープがあれば、次のようにチャネル名で始まるチャネルのすべてのメンバーの電子メールを取得できます。
これは、 groups.list および groups.info を使用するプライベートチャネルでも機能しますが、アクセストークンに関連するユーザーまたはボットがそのプライベートチャネルのメンバーである場合に限ります。 。
@Lamの回答に基づいて、python3で動作するように変更しました。
import requests
SLACK_API_TOKEN = "" # get one from https://api.slack.com/docs/oauth-test-tokens
CHANNEL_NAME = ""
# channel_list = requests.get('https://slack.com/api/channels.list?token=%s' % SLACK_API_TOKEN).json()['channels']
# channel = filter(lambda c: c['name'] == CHANNEL_NAME, channel_list)[0]
# channel_info = requests.get('https://slack.com/api/channels.info?token=%s&channel=%s' % (SLACK_API_TOKEN, channel['id'])).json()['channel']
# members = channel_info['members']
channel_list = requests.get('https://slack.com/api/groups.list?token=%s' % SLACK_API_TOKEN).json()['groups']
for c in channel_list:
if c['name'] == CHANNEL_NAME:
channel = c
channel_info = requests.get('https://slack.com/api/groups.info?token=%s&channel=%s' % (SLACK_API_TOKEN, channel['id'])).json()['group']
print(channel_info)
members = channel_info['members']
users_list = requests.get('https://slack.com/api/users.list?token=%s' % SLACK_API_TOKEN).json()['members']
for user in users_list:
if "email" in user['profile']:
print(user['profile']['email'])
小さなRubyスクリプトを作成しました。このスクリプトは、スラックチャネルからすべてのメンバーを取得し、CSV形式で返します。
スクリプト: https://github.com/olivernadj/toolbox/tree/master/slack-members
例:
$ ./membersof.rb -t xoxp-123456789A-BCDEF01234-56789ABCDE-F012345678 -g QWERTYUIO
first_name,last_name,email
John,Doe,[email protected]
Jane,Doe,[email protected]