LoginSignup
1
1

More than 3 years have passed since last update.

Slack APIとjqでSlackにいるメンバーをサクッと取得

Last updated at Posted at 2021-03-20

きっかけ

とあるSlackで特定のクラスタが何人いるのか数えたいと思いました。
そこでもはや何番煎じかもわからないですが、jqでSlackのユーザ一覧を取得し整形するということを試してみました。

Slack APIにてtoken取得

とりあえずアクセス

とりあえず下記のURLへアクセスし、Apps一覧の画面へいきましょう。

アプリ作成

上記のURLをクリックすると、
image.png
もしくは
image.png

みたいな画面が見えるはずなので、Create New Appをクリックします。
そうすると下記の画面が出てくるはずなので、
image.png
App Nameにアプリの名前を入力し、Development Slack Workspaceで対象のWorkspaceを選択します。

Permissonを与えて、Workspaceへの認証を実施

Appが出来上がると以下のBasic Infomation 画面へ遷移します(今回はサンプルとしてtestというAppを作成しています)。
image.png
左メニューにあるFeaturesOAuth & Permissionsへ移動します。
image.png
下へスクロールすると、Scopeという項目があります。
User Token Scopesの下にあるAdd an OAuth Scopeを押してusers:readの権限を追加します。
image.png
終わったら、左メニューにあるInstall App をクリックし移動し、Install to Workspaceをクリックします。
image.png
下記みたいな認証画面が出てくるので許可します。
image.png
これでUser Tokenが取得完了し一旦は終わりです。
image.png
このUser Tokenはコピーしておきましょう。

取得して加工

とりあえずjsonを取得

(やっとここからスクショが不要な部分になってほっとしてます)
以下はLinux, Mac, WSL/WSL2での利用を前提として記載となっております。
PowerShellやCommand Promptでの利用を前提としていない旨ご了承ください。

user.listのリファレンスを読む限り、HTTPのGetを投げてあげたらResponseで帰ってくるそうなので、とりあえずcurlで叩きます。

curlでの取得は以下の通りです。
<YourToken>は取得したUserToken

curl -X POST -H 'Authorization: Bearer <YourToken>' -H 'Content-type: application/json' https://slack.com/api/users.list > users_temp.json

jqのinstall

みんながみんなjqを入れてるわけではないはずなので、jsonの加工に必要なjqをインストール手順を示します。

sudo apt update
sudo apt install -y jq

レスポンスのjsonが読みづらいので整形

1行で返ってきてとても読みづらいので先ほど導入したjqで整形します。

cat users_temp.json | jq -r > users.json

csvへ出力

最後に、jsonからユーザ名を列にしたcsvを出力します。
jqの--raw-outputオプションを使ってもダブルクオートが消えないので、最後にsedコマンドで消し去っています。とりあえずワンライナーにて実行しています。

cat users.json |jq --raw-output '.members[] | [.name, .real_name] | @csv' | sed s/\"//g > users.csv

あとはcsvで確認すればOKです。
ちなみに、SlackにはWhat I Doに所属を記載でき、users.infoのAPIで個々の内容を取得することも可能です。
たださすがに制限に引っかかるであろうこと、何より人によって記載が異なったりすることがよくあるので結局最後はcsvを見て数え上げました・・・。

参考にした記事

1
1
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
1
1