背景
Slackを全社導入し、増えてくるユーザ。
そうなってくると必然的に管理しないといけないよね。。。
ページングなしで、一覧でアカウントを見れるものないかな〜
ないなら、どうする? そう! 作っちゃおう!
やったこと
- GAS(GoogleAppScript)でSlackのユーザを取得
- ユーザ情報の書き出し
GAS(GoogleAppScript)でSlackのユーザを取得
対象のエンドポイント/api/users.list
※詳しくはこちら
const token = "{Slackのトークン}";
let options = {
"method": "get",
"contentType": "application/x-www-form-urlencoded",
"payload": {
"token": token
}
}
const url = 'https://slack.com/api/users.list';
let response = UrlFetchApp.fetch(url, options);
let jsonResponse = JSON.parse(response);
console.log(jsonResponse.members);
ユーザ情報の書き出し
以下の情報がレスポンスとして取得可能
{
"id": "W012A3CDE",
"team_id": "T012AB3C4",
"name": "spengler",
"deleted": false,
"color": "9f69e7",
"real_name": "spengler",
"tz": "America/Los_Angeles",
"tz_label": "Pacific Daylight Time",
"tz_offset": -25200,
"profile": {
"avatar_hash": "ge3b51ca72de",
"status_text": "Print is dead",
"status_emoji": ":books:",
"real_name": "Egon Spengler",
"display_name": "spengler",
"real_name_normalized": "Egon Spengler",
"display_name_normalized": "spengler",
"email": "spengler@ghostbusters.example.com",
"image_24": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
"image_32": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
"image_48": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
"image_72": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
"image_192": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
"image_512": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
"team": "T012AB3C4"
},
"is_admin": true,
"is_owner": false,
"is_primary_owner": false,
"is_restricted": false,
"is_ultra_restricted": false,
"is_bot": false,
"updated": 1502138686,
"is_app_user": false,
"has_2fa": false
},
おまけ
- Slackのユーザって論理削除だとレスポンスを見て初めてしった。
- real_nameとユーザIDを一覧管理しておくと何かと便利
- GASでメッセージ送る時のメンション作成はユーザIDが必要
- チャンネルに一気にユーザを追加するとき、real_nameの列をコピペすれば一発
最後に
GASでめんどくさいを自動化してハッピーライフ✨