Edited at

slackのチャンネルにいるメンバーのメールアドレスをまとめて抜き出すツールを作った


はじめに

slackの特定チャンネルにいるユーザのメールアドレスをまとめて抜き出すツールを作りました。

使用イメージとしては以下の通りスクリプトを実行すると、slackのapi callを行い、特定チャンネルのユーザのメールアドレスを出力します


$ python get_users_list.py
"takuya@yahoo.co.jp"
"pokemon@yahoo.co.jp"
"hogehoge@google.co.jp"
"hoge@google.co.jp"
このuserにはemail-addressの設定がありません: "bot"
"hogehogehoge@outlook.com"


なぜ作ったか?

slackのチャンネルって所属する組織ごとに作られるケースが多くて、それがそのままconfluenceのグループになったり、違うツールのグループになったりします。

その際にチャンネルのメンバをクリックし、メールアドレスを確認するのが非常に面倒だったので確認を自動化しました。


使用方法


requirements

言語はpython 3系を使っています。HTTPライブラリはrequestsを使っています。


  • python 3

  • pip install requests


コード

簡単です。

# coding: utf-8

import requests
import json

URL = "https://slack.com/api/users.info"
TOKEN = "xoxp-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

MEMBERS_LIST = [
"U2L1MCTB9",
"U4REZ35R9",
"U4LR21BAA",
"U5RGA6ZV9",
]

for user in MEMBERS_LIST:
payload = {
"user": user,
"token": TOKEN
}
try:
# リクエストメソッドの引数にpayloadで指定したパラメータを付与する
response = requests.get(URL, params=payload)

data = response.json()
if not data["user"]["profile"]["email"]:
raise
print(json.dumps(data["user"]["profile"]["email"], indent=4))

except:
print("このuserにはemail-addressの設定がありません: " +
json.dumps(data["user"]["profile"]["display_name"]))


事前準備


tokenの確認の仕方

tokenの取得方法は以下の記事がとてもわかりやすいので、確認ください。

Slack APIのTokenの取得・場所

Slack API 推奨Tokenについて


対象チャンネルのメンバーの確認の仕方

slackにログイン後、

以下のページで確認することができます。

https://api.slack.com/methods/conversations.members/test

slackにログインできていれば、「token Required」に所属する組織のPJ名がでてきます。

スクリーンショット 2019-05-16 23.38.40.png

channelの欄には確認したいチャンネルのIDを入力する必要があります。

確認方法は簡単で、chromeでslackにログイン後、対象チャンネルに移動して、URLをコピペするだけです。

プラウザのURLを確認すると以下のようになっているはずです。

https://slack.com/messages/D2?FVM?ET/details/

それのmessagesとdetailsの間の8けたの英数字をコピーして上述の「channel Required」の箇所に貼り付けます。

TOKENとメンバーのリストが取得できたら、スクリプトを実行してください。

メールアドレスの一覧が取得できます。

なお、この方法で、メールアドレスだけでなく、他の情報も取得できます。

これを見ると名前とかiconとかも抜き出せるので色々お試しください。

https://api.slack.com/methods/users.info

たいした記事ではありませんが、どなたかの役に立つと嬉しいです(_ _).。o○