個人で使える!複数のSlackメンションをGASで自動管理する方法
GASとSlackの連携について
SlackとGASを連携させることで、メンションの通知を自動管理できます。
この技術を習得すれば、日々の通知作業が大幅に簡素化されるでしょう。
Slack APIの利用
SlackのAPIを使うことでメンション情報を取得できます。
まず、Slack APIトークンを取得し、GASからアクセスする準備を整えます。
GASでの初期設定
GASでプロジェクトを作り、Slack APIと連携するスクリプトを書いていきます。
このステップをクリアすれば、後はメンションを見逃さずにすみます。
GASでSlackメンションを取得する方法
Slackメンションを取得し、個人で管理するためのサンプルスクリプトはこちらです。
function fetchSlackMentions() {
const token = 'YOUR_SLACK_TOKEN';
const url = 'https://slack.com/api/conversations.history';
const response = UrlFetchApp.fetch(url, {
method: 'get',
headers: { Authorization: 'Bearer ' + token },
});
const data = JSON.parse(response.getContentText());
return data.messages.filter(message => message.text.includes('@user'));
}
このスクリプトでは、conversation.history APIを用いてメッセージを取得しています。
filterメソッドを使って、@user のメンションを含むメッセージだけを抽出します。
環境設定の注意点
事前にSlack APIトークンを準備し、スクリプト内の’token’変数にセットしてください。
APIの権限設定には注意が必要です。適切な権限を付与したトークンを用いましょう。
練習問題
GASを使って、特定のチャンネルからメンション含むメッセージだけを取得するスクリプトを書いてみましょう。
- Slack APIのトークンを取得し、変数にセットします。
- conversations.history APIを用いてチャンネルからメッセージを取得します。
- メンションを含むメッセージだけを抽出する条件を設定します。
解答・解説
function fetchSpecificChannelMentions() {
const token = 'YOUR_SLACK_TOKEN';
const channel_id = 'YOUR_CHANNEL_ID';
const url = <span class="code-function">https://slack.com/api/conversations.history?channel=${channel_id}</span>;
const response = UrlFetchApp.fetch(url, {
method: 'get',
headers: { Authorization: 'Bearer ' + token },
});
const data = JSON.parse(response.getContentText());
return data.messages.filter(message => message.text.includes('@user'));
}
このスクリプトでは、channel_idを指定することで特定のチャンネルのメッセージを取得しています。
取得したメッセージから、filterメソッドでメンションを含むものだけを抽出します。
このようにGASを活用することで、後はあなた次第で多様なカスタマイズができます。