【GAS×Slack自動化】リアクションランキングTOP10+詳細を毎月スレッド投稿する仕組みを作ってみた|非エンジニア人事広報の挑戦_MENDAN広報の独り言#04
今回のnoteはこちら!
MENDANとは別にエンジニアでない人事広報担当の私が、GAS(Google Apps Script)を使って「SlackリアクションランキングTOP10+詳細」を毎月自動でスレッド投稿する仕組みを作った話を紹介します!
🔧 背景
Slackでは、リアクション(スタンプ)による「感謝」や「賞賛」の文化が根付きつつありますが、
どんなリアクションがよく使われているか?
誰がリアクションをよく押しているか?
誰がリアクションを多くもらっているか?
といったことを、定量的に見える化できていないと感じていました。
🎯 目指したこと
月ごとのSlackリアクションを自動集計
TOP10リアクションをSlackに投稿
上位5リアクションの**「押した人TOP3 / 押された人TOP3」**をスレッドに投稿
特定スタンプ(例::white_check_mark:)はランキングから除外
毎月1日に自動通知される仕組みにする
🧰 使用したツール
Google スプレッドシート(データ集計用)
Google Apps Script(GAS)(Slack API連携)
Slack(User Token経由で操作)
🪜 実装の流れ
① Slack Appの作成
Slack APIページからアプリを作成し、以下のスコープを付与します。
users.conversations
channels:read
channels:history
reactions:read
users:read
chat:write
➡ xoxp-... 形式のトークンを取得してGASで使います。
② GASでリアクションを自動収集
const oldest = new Date('2024-10-01T00:00:00Z');
const latest = new Date('2025-04-30T23:59:59Z');
対象期間を設定して、参加しているすべての公開チャンネルからリアクション付きメッセージを取得し、スプレッドシートに保存。
③ GASでランキングと詳細データを作成
リアクションTOP50 シート:使用回数順のランキング
詳細 シート:上位5リアクションについて、押した人・押された人TOP3を記録
除外リアクション(例)も簡単に設定できます:
const excludedReactions = ["チェックマーク_緑", "テスト送信", "white_check_mark", "#ERROR!"];
④ Slackに一括投稿(スレッド付き)
メイン投稿:TOP10ランキング
スレッド投稿:上位5リアクションの詳細
Slackのメッセージ投稿APIで thread_ts を指定することで、1スレッドにまとめて表示できます。
⑤ 毎月1日に自動実行(トリガー設定)
Apps Scriptのトリガー機能で、以下の関数を毎月1日 AM9:00などに設定しておけばOK:
function mainMonthlySummary() {
collectReactionsFromUserChannels();
createReactionReports();
postReactionSummaryWithThread();
}
✅ 投稿されるSlackメッセージ例
社内の出力例


本文(TOP10)
:trophy: リアクションランキング TOP10(2024年10月〜2025年4月)
1位::ありがとう:(210件)
2位::ありがとうございます:(148件)
...
スレッド(詳細)
:bust_in_silhouette: 上位5リアクションの詳細(押した人 / 押された人)
:label: :ありがとう: の 押した人TOP3
・@ユーザーA(90回)
・@ユーザーB(43回)
・@ユーザーC(29回)
:label: :ありがとう: の 押された人TOP3
・@ユーザーB(62回)
・@ユーザーD(38回)
・@ユーザーE(30回)
...
...📌 所感
スレッドに詳細をまとめることで情報が見やすく・気が散らない
月1のSlack通知だけでもチーム内の称賛文化が可視化される
GASだけで完結できるのが最高(無料・柔軟)
☁️ 今後の展望
月別アーカイブの保存
Slack上でのリアクション通知に絵文字以外のラベルやメダルも付けたい
押された回数の多い人を表彰DMで通知する機能も入れたい
📩 ご希望があればコード全文やテンプレートも提供できます!
コメントやLinkedInDMでお気軽にどうぞ。
