ヒビノログ

個人的なメモを淡々と記録していくブログ。最近はLaravelやスマートフォンの話題など。

GASを使ったSlackアカウント管理

Google Apps Script を使った簡単なSlackアカウント作成/無効化を紹介します。

GASを使ったアカウント作成については下記の記事が詳しいので、こちらを参照するとよいです。 qiita.com

本記事ではアカウントの無効化だけ扱います。

Slackのユーザー管理系APIの中に users.admin.setInactive というAPIがあるようなので、これを使います。 このAPIはパラメータに対象アカウントのIDを指定する必要があるため、アカウントリスト取得API(users.list)を使ってIDを取得してから無効化APIを呼び出すという流れになります。

下記にScriptの例を置いておきます。

function inactivate(email) {
  var del_id = '';

  // Slackのユーザリストを取得
  var listurl = 'https://' + slack_team + '.slack.com/api/users.list?token=' + slack_token;
  var listres = UrlFetchApp.fetch(listurl);
  var listjson = JSON.parse(listres.getContentText());
  for each(var val in listjson["members"]) {
    if (val["profile"]["email"] == email) {
      // 指定のメアドを持つアカウントが存在する場合は id を保持
      del_id = val["id"];
      break;
    }
  }
  
  // メアドに該当するアカウントがいる場合のみ
  if (del_id != "") {
    // 指定のアカウントを無効化
    var delurl = 'https://' + slack_team + '.slack.com/api/users.admin.setInactive';
    var query = 'user=' + del_id + '&token=' + slack_token + '&set_active=true'
    var param = {
      method : 'post',
      payload : query
    };
    var res = UrlFetchApp.fetch(delurl, param)
  }
}

招待APIと同様、無効化APIも Slack API のメソッド一覧に無いので、いつまで使えるかはわかりませんが、参考までに。