sironekotoroの日記

Perl で楽をしたい

Perl で Slack API を使ってユーザー一覧を取得する(追記あり)

Slack のユーザー一覧を取得せよ!

ってなお仕事が降ってきたものの、Slack のメニューとか探したど見当たらず。

これは API 使えってことなのかなぁ・・・使うんはいいけど、普通の非テックな会社だと厳しいんでは。

もっと高い料金プランだと出てくるのかな?

それとも、非テックでも Slack 使うような会社ならそれくらいいけるんだろうか。

API を使うそのまえに

ってわけで、いつも通り Perl でやります・・・が、やる前に API を利用できるようにする準備から。

こちらの記事が大変役に立つというか、そのまま進んでそのまま OAuth Token を入手することができました。

ありがたい。

qiita.com

WebService::Slack::WebApi

あとは、Perl の便利モジュールがうまいことやってくれます。

metacpan.org

#!/usr/bin/env perl
use strict;
use warnings;
binmode STDOUT, ":utf8";

use WebService::Slack::WebApi;

my $ACCESS_TOKEN = 'xoxp-hogehogefugafuga';

my $slack = WebService::Slack::WebApi->new( token => $ACCESS_TOKEN );

my $users = $slack->users->list;

# $users の中にユーザーの情報が入っているので、
# とりたい情報が気になる人は Data::Dumper で中を覗いてみる

for my $member ( @{ $users->{members} } ) {

   # 削除済みユーザーや、bot も含まれているので除外する
    next if ( $member->{deleted} == 1 ) || ( $member->{is_bot} == 1 );

    print "$member->{name}\t$member->{profile}->{display_name}\n";
}

あっさり。

2020-11-20 追記

依頼主もメンバー一覧とるのに API しかなさそうー、って言ってはいたんですが、slack のワークスペースの管理者であれば、確認方法があることを教えていただきました。

そりゃあるよなぁ!(テノヒラクルー

ありがとうございます・・・って、bio 見たらこの方、slack のAPI SDK 作っておられるのですね・・・助かりました。

画面左上のワークスペース -> 設定と管理 -> メンバーを管理する、から確認することができました。

f:id:sironekotoro:20201120102113p:plain