Slackで効率的にリアクションを集計するGAS活用法
Slack APIからのリアクション取得方法
Slackのリアクションを集計するには、まずSlack APIからデータを取得する必要があります。
Slack APIトークンの用意
まずは、Slackからリアクションデータを取得するために必要なAPIトークンを準備します。
1. SlackのAPI管理画面にアクセスします。
2. Appを作成し、Permissionsで「reactions:read」権限を追加します。
3. 「OAuth & Permissions」からトークンをコピーします。
GASでAPI呼び出し
次に、GASを使ってSlack APIにアクセスし、リアクションを取得します。
function getSlackReactions() {
const token = 'your-slack-token';
const channelId = 'channel-id-here';
const url = 'https://slack.com/api/conversations.history?channel=' + channelId;
const options = {
method: 'get',
headers: {
'Authorization': 'Bearer ' + token
}
};
const response = UrlFetchApp.fetch(url, options);
const messages = JSON.parse(response.getContentText()).messages;
messages.forEach(message => {
if (message.reactions) {
message.reactions.forEach(reaction => {
Logger.log('Emoji: ' + reaction.name + ', Count: ' + reaction.count);
});
}
});
}
このコードは、指定したチャンネルのメッセージ履歴を取得し、各メッセージに付けられたリアクションの種類と数をログに出力します。
GASでリアクションを集計する方法
リアクションを詳細に集計するためには、取得したデータを整理し、分析する必要があります。
リアクションの集計ロジック
リアクションデータを取り出して、その数を集計するスクリプトです。
function tallyReactions(messages) {
const reactionTally = {};
messages.forEach(message => {
if (message.reactions) {
message.reactions.forEach(reaction => {
if (reactionTally[reaction.name]) {
reactionTally[reaction.name] += reaction.count;
} else {
reactionTally[reaction.name] = reaction.count;
}
});
}
});
Logger.log(reactionTally);
}
function main() {
const messages = getSlackReactions();
tallyReactions(messages);
}
このスクリプトでは、getSlackReactions関数で取り出したメッセージをtallyReactions関数で集計しています。
結果はリアクションごとに合計された数値としてLoggerに出力されます。
練習問題
Slack APIを使用して、新しいリアクションを追加するGASスクリプトを考えてみてください。
ヒント:Slack APIの「reactions.add」エンドポイントを調べましょう。
解答・解説
以下は、新しいリアクションをメッセージに追加するGASスクリプトです。
function addReactionToMessage() {
const token = 'your-slack-token';
const channelId = 'channel-id-here';
const timestamp = 'message-timestamp';
const reactionName = 'thumbsup'; // 追加したいリアクション名
const url = 'https://slack.com/api/reactions.add';
const options = {
method: 'post',
contentType: 'application/x-www-form-urlencoded',
headers: {
'Authorization': 'Bearer ' + token
},
payload: {
channel: channelId,
name: reactionName,
timestamp: timestamp
}
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
このスクリプトは、指定したメッセージIDにリアクションを追加します。URLやpayloadのパラメータを適切に記入することで、さまざまなリアクションを追加可能です。
この方法により、普段の業務でのSlack活用がより効率的になります。