GasとSlackで効率化!リアクション集計の自動化方法
GASを使ったSlackリアクション集計の基本
GAS(Google Apps Script)を利用することで、Slackのリアクションを自動で集計することができます。まずは、基本的な設定を行いましょう。
Slack APIとGASの連携
Slack APIを使うためには、まずSlackアプリを作成し、React APIを有効にする必要があります。
以下のステップがあります。
- Slackの管理コンソールで新規アプリを作成する。
- 必要なAPIスコープを設定(リアクションに対するスコープを有効化)。
- Slack APIトークンを取得し、GASスクリプトに設定する。
GASスクリプトでの設定
GAS側では、Slackからリアクション情報を取得するためのスクリプトを準備します。
const SLACK_TOKEN = 'your-slack-api-token';
function getReactionsFromSlack() {
const url = 'https://slack.com/api/reactions.list?token=' + SLACK_TOKEN;
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
return data;
}
このスクリプトでは、Slackのリアクション情報を取得しています。UrlFetchApp.fetch()を使って、指定されたURLからデータを取得します。
リアクションデータの整理と出力
取得したリアクションデータを整理し、どのようにスプレッドシートに出力するかを見ていきます。
データの整理
取得したデータが多い場合、整理することが必要です。
function parseReactions(data) {
const reactions = [];
data.items.forEach(item => {
item.message.reactions.forEach(reaction => {
reactions.push({
name: reaction.name,
count: reaction.count,
users: reaction.users
});
});
});
return reactions;
}
このスクリプトは取得したデータを回し、リアクションの名前、数、ユーザー情報を配列に追加します。
整理したデータをスプレッドシートに出力
function updateSpreadsheet(reactions) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.clear();
sheet.appendRow(['リアクション名', '数', 'ユーザー']);
reactions.forEach(reaction => {
sheet.appendRow([reaction.name, reaction.count, reaction.users.join(', ')]);
});
}
スプレッドシート上にリアクションデータを書き出し、集計結果を視覚的に確認できるようにします。
練習問題
以下の練習問題に挑戦してみましょう。
問題: 上記のスクリプトを基にして、新しいリアクションが追加された場合のみ更新されるようにしてみましょう。
解答・解説
function updateSpreadsheetWithCheck(reactions) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const existingData = sheet.getDataRange().getValues();
const existingReactions = existingData.map(row => row[0]);
reactions.forEach(reaction => {
if (!existingReactions.includes(reaction.name)) {
sheet.appendRow([reaction.name, reaction.count, reaction.users.join(', ')]);
}
});
}
このスクリプトでは、スプレッドシートに既存のリアクションが含まれていない場合のみ、リアクションを追加します。これにより、新しいリアクションのみを追加し、既存のデータと重複しないようにできます。