web-dev-qa-db-ja.com

Slack API:Slackチャネルからすべてのメンバーのメールを取得します

スラックチャネルの名前を考えると、そのチャネルのすべてのメンバーの電子メールのリストを取得する方法はありますか? slack apiのドキュメントを調べてみましたが、これを実現するために必要なメソッドが見つかりませんでした( https://api.slack.com/methods )。

8
user5844628

必要なスコープがあれば、次のようにチャネル名で始まるチャネルのすべてのメンバーの電子メールを取得できます。

  1. channels.list を呼び出して、すべてのチャネルのリストを取得し、チャネル名をそのIDに変換します
  2. 目的のチャネルの channels.info をチャネルIDで呼び出して、そのメンバーのリストを取得します。
  3. sers.list を呼び出して、プロファイル情報と電子メールを含むすべてのSlackユーザーのリストを取得します
  4. チャネルメンバーリストをユーザーIDによるユーザーリストと照合して、正しいユーザーと電子メールを取得します

これは、 groups.list および groups.info を使用するプライベートチャネルでも機能しますが、アクセストークンに関連するユーザーまたはボットがそのプライベートチャネルのメンバーである場合に限ります。 。

5
Erik Kalkoken

@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'])
0
Costa Huang

小さな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]
0
oliver nadj