Skip to content

Instantly share code, notes, and snippets.

@3panda
Last active April 7, 2018 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 3panda/7dfd70c61b6f1f897eb0b3ce66d9a9d9 to your computer and use it in GitHub Desktop.
Save 3panda/7dfd70c61b6f1f897eb0b3ce66d9a9d9 to your computer and use it in GitHub Desktop.

Slack APIのユーザー情報から必要な情報を抜き出しJson形式で保存する

ターミナル

token=[TOKEN]
python3 get_slack_userList.py $token

Python (get_slack_userList.py)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import urllib.request as request
import json
import sys
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

URL = 'https://slack.com/api/users.list'


def main(token):
    # API アクセス
    params = {'token': token}
    params = urllib.parse.urlencode(params)
    req = request.urlopen(URL + '?' + params)
    r = req.read().decode("utf-8")
    data = json.loads(r)

    # user情報を格納するlist
    users = []
    for key in data["members"]:
        if "email" in key["profile"]:
            users.append({
                "id": key["id"],
                "name": key["name"],
                "email": key["profile"]["email"],
                "deleted": key["deleted"]
            })

    # Jsonに保存
    fname = "./json/usersdata.json"
    with open(fname, "w", encoding="utf-8") as f:
        json.dump(users, f, sort_keys=False, indent=4)


if __name__ == '__main__':
    args = sys.argv
    main(args[1])

出力したJson (usersdata.json)

[
    {
        "id": "AAAAAAAAA",
        "name": "user_a",
        "email": "user_a@xxxx.xx.xx",
        "deleted": false
    },
    {
        "id": "BBBBBBBBB",
        "name": "user_b",
        "email": "user_b@xxxx.xx.xx",
        "deleted": false
    }
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment