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. レスポンスが正しければ、取得したチャンネル名をログに出力します。
練習問題
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メソッドを利用して、各チャンネル名が指定されたキーワードを含むかどうかをチェックしています。目的のチャンネル名だけをログに出力することができます。