🐴

GAS × Slack:Slackユーザーの一覧を出力する

2021/02/08に公開

これは何

Slackのユーザー一覧を出力するためのGAS。

実行するとこうなる

ソースコード

function getSlackUser(cursor) {
  
  const slack_app_token = "yourToken";
  const limit =500;
  const options = {
    "method" : "get",
    "contentType": "application/x-www-form-urlencoded",
    "payload" : { 
      "token": slack_app_token,
      "cursor": cursor,
      "limit":limit
    }
  };
  
  const url = "https://slack.com/api/users.list";
  const response = UrlFetchApp.fetch(url, options);
  
  const members = JSON.parse(response).members;
  
  let activeArr = [];
  let inActiveArr = [];

    for (const member of members) {
        let deleted = member.deleted;
        let id = member.id;
        let real_name = member.profile.real_name; //氏名
        let name = member.name; //mei
        let is_primary_owner = member.is_primary_owner; //プライマリオーナー
        let is_owner = member.is_owner; //オーナー
        let is_admin  = member.is_admin; //管理者アカウント
        let is_restricted = member.is_restricted; //Trueならばゲスト
        let is_ultra_restricted = member.is_ultra_restricted; //true ならばシングルゲストチャンネル,Falseかつis_restrictedがTrueならばマルチチャンネルゲスト
        let is_bot = member.is_bot; //botユーザー
        let is_app_user = member.is_app_user; // アプリユーザー
        let is_invited_user = member.is_invited_user;// 招待中
        let guest_invited_by = member.guest_invited_by ; //アカウント有効期限

if (!member.deleted) {
        activeArr.push([ id, deleted,real_name, name, is_primary_owner, is_owner, is_admin , is_restricted, is_ultra_restricted, is_bot, is_app_user, is_invited_user,guest_invited_by]);
}
if (member.deleted) {
inActiveArr.push([ id, deleted,real_name, name, is_primary_owner, is_owner, is_admin , is_restricted, is_ultra_restricted, is_bot, is_app_user, is_invited_user,guest_invited_by]);
 }
    }


  //スプレッドシートに書き込み
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear();
  sheet.appendRow(['ID','削除済','氏名','ユーザー名','プライマリオーナー','オーナー','管理者アカウント','ゲストアカウント','シングルorマルチ','botユーザー','アプリユーザー','招待中','アカウント有効期限']);

try{
  sheet.getRange( sheet.getLastRow()+1,1, activeArr.length, activeArr[0].length).setValues(activeArr);
  sheet.getRange( sheet.getLastRow()+1,1, inActiveArr.length, inActiveArr[0].length).setValues(inActiveArr);
}
catch(e){}

    if( responseMeta = JSON.parse(response).response_metadata.next_cursor != ''){
    getSlackUser(JSON.parse(response).response_metadata.next_cursor);
  }
}

Discussion