GASで実現!Slackのチャンネル一覧を簡単に取得する方法

Slackのチャンネル一覧をGASで取得する方法ってありますか?業務で必要に迫られているんですけど…
猫男
猫男
catman
catman
よし、catmanがGASを使ってSlackのチャンネル一覧を取得する方法を教えてやろう!見ているうちに気づけば簡単だぞ!

 

Slack APIの準備

GASを使ってSlackのチャンネル一覧を取得するには、まずSlack APIを利用する準備が必要です。

Slack APIトークンの取得

まずはSlackのAPIトークンを手に入れる必要があります。

1. SlackのAPIサイトにアクセスして、新しいアプリを作成します。

2. 必須の権限(channels:read)を付与します。

3. APIトークンをコピーしておきましょう。

GASでのスクリプト準備

次にGASで作業を始めます。

1. Google Apps Scriptのエディタを開きます。

2. 新しいプロジェクトを作成します。

 

Slackのチャンネル一覧をGASで取得する方法

次に、実際にGASでSlackのチャンネル一覧を取得します。

スクリプトの実装

まずは以下のスクリプトをコピーしてGASのエディタに貼り付けます。


function fetchSlackChannels() {
  const token = 'xoxb-Your-Slack-Token-Here';
  const url = 'https://slack.com/api/conversations.list?limit=100';
  const options = {
    method: 'get',
    headers: {
      Authorization: 'Bearer ' + token
    },
    muteHttpExceptions: true
  };
  
  try {
    const response = UrlFetchApp.fetch(url, options);
    const data = JSON.parse(response.getContentText());
    if (data.ok) {
      Logger.log('チャンネル一覧:');
      data.channels.forEach(channel => Logger.log(channel.name));
    } else {
      Logger.log('Error: ' + data.error);
    }
  } catch (e) {
    Logger.log('例外が発生: ' + e.message);
  }
}

このスクリプトは、指定されたSlack APIのエンドポイントに対してリクエストを送り、チャンネル情報を取得します。

スクリプトの解説

1. tokenには先ほど取得したSlack APIのトークンを入力します。

2. UrlFetchApp.fetchを用いて、Slack APIにリクエストを送ります。

3. レスポンスが正しければ、取得したチャンネル名をログに出力します。

 

catmanさん、これで僕も無事にSlackのチャンネル一覧を取得できるようになりました!ありがとうございます!
猫男
猫男
catman
catman
かんたんだろう?GASでどんどん便利な自動化を増やすのもいいぞ。それに慣れたら、さらなる自動化の高みを目指そう!

 

練習問題

Slackのチャンネル一覧をGASで取得する際に、特定のキーワードを含むチャンネル名だけをログに出力してみましょう。

  

解答・解説


function fetchChannelsWithKeyword(keyword) {
  const token = 'xoxb-Your-Slack-Token-Here';
  const url = 'https://slack.com/api/conversations.list?limit=100';
  const options = {
    method: 'get',
    headers: {
      Authorization: 'Bearer ' + token
    },
    muteHttpExceptions: true
  };
  
  try {
    const response = UrlFetchApp.fetch(url, options);
    const data = JSON.parse(response.getContentText());
    if (data.ok) {
      Logger.log('キーワードを含むチャンネル一覧:');
      data.channels
        .filter(channel => channel.name.includes(keyword))
        .forEach(channel => Logger.log(channel.name));
    } else {
      Logger.log('Error: ' + data.error);
    }
  } catch (e) {
    Logger.log('例外が発生: ' + e.message);
  }
}

スクリプトでは、filterメソッドを利用して、各チャンネル名が指定されたキーワードを含むかどうかをチェックしています。目的のチャンネル名だけをログに出力することができます。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。