Slack勤怠チャンネルの通知を減らす方法|1日1回にまとめる設定手順
1. この記事でできること(ゴールを明示)
勤怠専用チャンネルに「出勤しました」「退勤します」などの投稿が流れ続け、通知が鳴りやまない。そんな課題を、無料ツールだけでシンプルに解決します。この記事では、Slackの勤怠投稿を自動で集計し、毎日決まった時刻に1件の「日次サマリ(まとめ)」として別チャンネルに投稿する仕組みをつくります。
最終的に目指す状態は次の通りです。
- #勤怠(元のチャンネル)はミュートし、通知を気にせず記録専用にする
- #勤怠-サマリ(新設)に、毎日18:00にその日の出退勤を1件にまとめて自動投稿
- 作業時間は約30分。難しい理論は最小限、実際に「動く」状態まで一気に進めます
無料プランで完結させます(Slack無料ワークスペース、Googleアカウント、Make無料プランを利用/クレカ登録不要)。
2. 今回作る自動化の仕組みの全体像
流れはシンプルです。勤怠用チャンネルに投稿されたメッセージをMake(ノーコード自動化ツール)が見張ります。該当する投稿だけをGoogleスプレッドシートに記録し、毎日18:00にその日の分を読み出して1件のまとめをSlackに投稿します。
- トリガー(きっかけ):#勤怠に新しいメッセージが投稿された
- 記録:Googleスプレッドシートにユーザー・内容・時刻を1行で保存
- スケジュール:毎日18:00にその日の行だけ集計
- 出力:#勤怠-サマリに「本日の出退勤まとめ」を1件投稿
なぜこの設計かというと、「通知の回数」を減らすことが最優先だからです。元チャンネルはログ置き場として静かに流し、見るべき情報はまとめて受け取る。この二層構造で、“必要なときだけ通知”を実現します。
3. 事前に必要なアカウント・準備物
| ツール | 用途 | 登録・取得するもの | 料金/注意 |
|---|---|---|---|
| Slack | 勤怠投稿の取得/サマリ投稿 | ワークスペース参加権限、#勤怠 と #勤怠-サマリ チャンネル | 無料プランOK。アプリ追加が制限されている場合は管理者承認が必要 |
| Googleアカウント | 記録用のGoogleスプレッドシート | スプレッドシート1つ(後述の列構成) | 無料。既存の個人/会社アカウントで可 |
| Make(make.com) | 自動化フローの作成・実行 | 無料アカウント、Slack/Googleとの接続(OAuth) | 無料プランで動作可(最短実行間隔15分・月間オペレーション上限あり/クレカ不要) |
順番は「チャンネル準備 → シート作成 → Make接続 → シナリオ作成」と進めると迷いません。
4. 必要なツール、アカウントの設定
4-1. Slackのチャンネルを整える(5分)
- #勤怠(既存)の役割を「記録専用」と定義します。投稿はそのまま流れてOK。
- #勤怠-サマリ(新規)を作成します。ここに毎日1件だけ自動投稿します。
- 通知対策:参加メンバーには#勤怠をミュート(チャンネル詳細→通知→ミュート)し、「@メンションのみ通知」にするよう案内します。なぜか:日々の小粒な通知を止め、重要なまとめだけを見るためです。
ここで失敗しても大丈夫。チャンネル名は後から変更できます。
4-2. Googleスプレッドシートを用意(5分)
新しいスプレッドシートを作り、1行目に以下のヘッダーを入れます。
- date(YYYY-MM-DD)
- time(HH:MM)
- user(表示名)
- action(出勤/退勤/その他)
- text(元メッセージ)
- channel(#勤怠)
- ts(SlackメッセージID)
なぜヘッダーを決めるか:Makeから列を指定して書き込むためです。ファイル名は「勤怠ログ(自動)」など分かりやすく。
4-3. Makeアカウント作成と接続(10分)
- make.comで無料サインアップ。クレジットカード不要です。
- ダッシュボードからConnections(接続)でSlackとGoogle Sheetsを追加。画面の指示に従って認可します。なぜ事前に接続するか:シナリオ作成中の迷いを減らすためです。
- タイムゾーンをAsia/Tokyoに設定(Profile→Locale)。なぜか:18:00のスケジュールが日本時間で動くようにするためです。
5. 自動化ツールの設定
5-1. シナリオA:勤怠投稿を記録する(15分)
目的:#勤怠に新規投稿があったら、勤怠らしいものだけをスプレッドシートに1行で保存します。
- Makeで新規Scenarioを作成。「Slack」モジュールから「Watch messages in a channel(チャンネルの新規メッセージを監視)」を選択。#勤怠を指定します。初回はテスト取得用に直近メッセージを1件取り込めます。
- フィルターを追加。条件は「text に '出勤' を含む OR '退勤' を含む OR '在宅' を含む」など最低限でOK。なぜか:雑談や他のBot投稿が紛れないようにするためです。最初は広めに取り、あとから絞るのがおすすめ。
- 次に「Google Sheets → Add a Row(行を追加)」を接続。先ほどのスプレッドシートとシート名を選び、各列にマッピングします。
- date:Slackのメッセージ時刻(ts)をMakeの関数で日付に変換(例:formatDate(addSeconds('1970-01-01', {{ts}}, 'UTC'), 'YYYY-MM-DD', 'Asia/Tokyo'))。細かい式は画面のカレンダーアイコンから設定できます。うまくいかなくても後で直せます。
- time:同様に'HH:mm'形式で変換
- user:message.user_profile.real_name など(取得できる表示名)
- action:textに'出勤'を含む→'出勤'、'退勤'を含む→'退勤'、それ以外→'その他'(MakeのRouterや関数ifで簡易分岐。難しければ空欄でもOK)
- text:message.text
- channel:固定で「#勤怠」
- ts:message.ts(後で原文に戻る用。任意)
右上の「Run once」でテスト実行。#勤怠に「出勤します」など試しに投稿すると、シートに1行追加されれば成功です。成功したら「Scheduling」をON(最短15分間隔)。ここで失敗しても大丈夫。フィルター条件や列名が合っているか一つずつ戻って確認しましょう。
5-2. シナリオB:日次サマリを投稿する(10分)
目的:毎日18:00に当日の行をまとめ、#勤怠-サマリへ1件投稿します。
- 新規Scenarioを作成。最初のモジュールは「Tools → Scheduler」。Every day at specific time を選び、18:00、タイムゾーンをAsia/Tokyoに設定。
- 「Google Sheets → Search rows/Read rows」を追加。スプレッドシートを選び、Filterで date equals 今日(formatDate(now; 'YYYY-MM-DD'; 'Asia/Tokyo'))。
- 「Tools → Aggregate to text(行をテキストに集約)」で、各行を「- {{user}}:{{action}} {{time}}({{text}})」のように整形。なぜ集約するか:Slackに1件で見やすく投稿するためです。
- 「Slack → Create a message」を追加。#勤怠-サマリを選び、本文は次のようにします。
【本日の勤怠まとめ({{formatDate(now; 'YYYY-MM-DD'; 'Asia/Tokyo')}})】
{{if(length(aggregatedText) > 0; aggregatedText; '本日の記録はありません')}}
テスト実行し、#勤怠-サマリに1件のまとめが出れば成功です。終わったらSchedulingをONにします。
任意の発展:元投稿に✅リアクションを付ける、などの処理も追加できます(tsを使って「Slack → Add reaction」)。まずは動く最小構成を優先しましょう。
6. 動作確認(実際の質問例)
ここでは実際に手を動かして確かめます。「質問例」は、勤怠チャンネルに投げるテスト投稿の例だと考えてください。
- #勤怠に「出勤します(在宅)」と投稿。数分待ってスプレッドシートに1行追加されるか確認します。
- 続けて「退勤します」。同様に2行目が追加されるか確認。
- シナリオBを手動で「Run once」。#勤怠-サマリに次のような1件投稿が出ればOKです。
【本日の勤怠まとめ(2024-04-01)】 - 田中 太郎:出勤 09:12(出勤します 在宅) - 田中 太郎:退勤 18:05(退勤します)
最後に、#勤怠をミュートし、#勤怠-サマリをフォロー(チャンネルのベルを「すべての新しいメッセージ」に)へ。これで通知は1日1回に集約されます。
7. うまく動かないときのチェックポイント
- Slack接続の権限不足:ワークスペースで外部アプリが禁止されていないか。管理者に「MakeのSlackアプリ連携の許可」を依頼。
- 監視チャンネルの選択ミス:#勤怠ではなく別チャンネルを見ていないか。モジュール設定を再確認。
- フィルターが厳しすぎる:'出勤' と '退勤' のみで始め、後から語句を追加。最初は広く。
- スプレッドシートの列名:ヘッダー名とMakeのマッピングが一致しているか。列の順番変更はNG(変更したら再マッピング)。
- 時刻のずれ:MakeのタイムゾーンがAsia/Tokyoか。SchedulerとformatDateの両方を確認。
- シナリオのON忘れ:右上のSchedulingがONか。A/B両方がONになっているか。
- 無料プランの制限:Makeは15分間隔・月間オペレーション上限あり。上限到達時は翌月まで待つか、フィルターで対象を絞る。
- スレッド内投稿:一部Botはスレッドに返信します。Slackモジュールの「サブタイプ」も拾う設定か確認。難しければまずは通常投稿に限定。
ここで失敗しても大丈夫。原因はたいてい「接続権限」「フィルター」「列名」のどれかです。1つずつ戻って確認しましょう。
8. 次にできる改善アイデア
- 曜日・勤務形態のタグ化:'在宅開始/終了' などキーワードを増やし、サマリを見やすく分類。
- 週次・月次の集計:同じシートから金曜夕方に週次まとめ、月末に月次まとめを自動投稿。
- 上長へのDM通知:遅刻・未投稿者だけを抽出し、上長へDMでピンポイント通知。
- スレッド運用の徹底:#勤怠では「出勤」投稿に対して「退勤」はスレッドで返信するルールに。通知をさらに抑制できます(ルール化はシンプルに)。
- Slack Workflow Builder(有料プラン向け):有料ワークスペースなら、Workflow Builderでフォーム入力→スレッド集約も可能。
- 権限制御:#勤怠はBotと特定ロールのみ投稿可にし、人の誤投稿を防止(チャンネル管理権限が必要)。
まずは「日次サマリが1件届く」状態を維持し、チームの反応を見てから少しずつ改善しましょう。