SlackAPIでユーザーグループIDを取得し確認する方法(GASサンプル付)

Slackのボットを開発していると、チャンネルIDの他に有料版で利用可能なユーザーグループのIDを確認したいケースがあります。

そこで、SlackAPIリクエストでユーザーグループIDの取得方法をGoogle Apps Script(GAS)のサンプルを使って解説します。

チャットツールSlackはAPIによるボット開発が盛ん

テキストチャットツールとして有名なSlackには、エンジニアを中心に人気を集めています。

Slackの特徴として、他のチャットツールに比べてAPIが充実しています。

そうしたSlackAPIを活用し、様々なボットを開発したりするなど、Slackアプリの開発が盛んに行われています。

例えば、サーバーのエラーメッセージをSlackに通知したり、スケジュールされたタイミングでスクレイピングした結果をSlackに投稿したりなどです。

Slackがテキストコミュニケーションの中心となっていると、Slackに色々な情報を集めることが効率的になります。

各職場の業務に応じ、SlackAPIを活用して、ボット開発する人たちも多数存在しています。

ユーザーを束ねるユーザーグループ(有料版Slackのみ)

無料版のSlackにはありませんが、有料版には「ユーザーグループ」機能が搭載されています。

ユーザーグループというのは名前の通り、Slackユーザーのグループを表したものです。

メールで言うところの、部署やチーム用のセキュリティーグループ(チーム用メーリングリスト)に相当します。

メリットとしてはユーザーグループ宛にメンション付きのSlackチャンネル上で投稿すると、ユーザーグループに含まれる個々のユーザーに通知することができます。

個人ユーザーの場合は、異動が発生すると担当が変わり、宛先を変更しなければなりません。

しかし、ユーザーグループは異動があっても所属ユーザーを修正すればよく、宛先はそのままです。

こうした点での利便性から、有料版Slackを使っている会社や組織ではユーザーグループを活用しています。

ユーザーグループのIDはウェブやアプリ上で確認不可

前述したSlack APIを利用したボット開発では、有料版Slackだと、ユーザーグループ宛にメンションを送るボットを作成したいケースがあります。

しかし、ユーザーグループはSlackのウェブ管理画面やアプリ上でも、IDを確認することができません。

SlackではユーザーのIDやチャンネルのIDはウェブ&アプリで確認できるようになっています。

Slackワークスペースに属するユーザーのメンバーIDを調べる方法・手順を解説

SlackのチャンネルIDを調べる方法(Webブラウザとアプリで確認)

しかし、ユーザーグループのIDは、上記で提示したユーザーIDやチャンネルIDの調べ方をしても表示されません。

実は有料版Slackで利用可能なユーザーグループは、ウェブやアプリ画面で確認できない仕様となっています。

Slack APIリクエストでのみユーザーグループIDが取得可能

では、SlackのユーザーグループIDを取得することはできないのでしょうか。

実はSlackのユーザーグループIDは、Slack APIをリクエストすることで取得することができます。

Slack APIでは「https://slack.com/api/usergroups.list」というAPIリクエストを実行すると、ユーザーグループIDが出力されます。

なお、ユーザーグループの読み取りにはボットのパーミッション(権限)を事前に設定する必要があります。

Slack APIのパーミッション画面で「usergroups:read」の権限を追加しないと、APIリクエストがエラーするので注意しましょう。

このようにユーザーグループIDを取得するにはSlack APIによるリクエストのみが有効な方法です。

GASによるSlackAPIリクエストでユーザーグループID確認

Google Apps Script(GAS)でSlackAPIの「https://slack.com/api/usergroups.list」をリクエストして、ユーザーグループIDを確認するサンプルコードを紹介します。

GASはGoogleが提供するJavascriptライクなスクリプトサービスです。

サーバレスでスケジュール実行やトリガー実行などが無料で利用でき、お手軽に使えてとても便利です。

なお、サンプルコードを実行する前に、当該のSlackワークスペースで動作するSlackAPIのトークンを発行しておく必要があります。

GASでSlack APIをリクエストし、ユーザーグループIDをログ出力するサンプルコードは以下の通りです。

function getSlackUserList() {
//SlackAPIのtokenを設定
let slack_taken = "************************";
//usergroupの情報を取得するAPIリクエストURLを設定
let url = "https://slack.com/api/usergroups.list";
//APIリクエストのPOSTで必須のパラメータをJSON形式で指定
let json = {
'token' : slack_taken
};
//HTTP POSTを行うためのメソッドと、パラメータを設定
let options = {
'method' : 'post',
'payload' : json
};
//URLフェッチを実行し、データを取得し、ログ出力
let response = UrlFetchApp.fetch(url,options).getContentText();
console.log(response);
}

実行すると、JSON形式でユーザーグループの情報を取得でき、その中にユーザーグループIDが格納されています。

{
“ok": true,
“usergroups": [
{
“id": “S01T5*******",
“team_id": “チームID",
},
{
“id": “S01TU*******",
“team_id": “チームID",
},
“user_count": 0,
“channel_count": 0
}
]
}

※上記のJSONの赤文字部分。一部情報を割愛しています。

まとめ・終わりに

今回、Slack APIを利用して、有料版Slackの機能であるユーザーグループのIDを取得・確認する方法を紹介しました。

ユーザーグループは有料版Slackのみの機能のため、利用しているユーザーは少ないですが、メールのセキュリティーグループのようにSlack上で管理できて便利です。

しかし、有料版Slackの利用ユーザーのみしか使わないので、ネット上での情報が少ない状態でした。

Slackのボットでユーザーグループを活用するために、ユーザーグループIDを取得するSlackAPIのリクエスト方法をGoogle Apps Script(GAS)のサンプル付きで解説しました。

GASなら無料で利用できるので、APIをリクエストするのにも気軽に利用できます。

ぜひ、有料版SlackのユーザーグループのIDを知りたい場合は、今回紹介した方法を試してみて下さい。