Googleスプレッドシート期限をSlackに自動通知する方法【無料で30分】

Googleスプレッドシート期限をSlackに自動通知する方法【無料で30分】

1. この記事でできること

このガイドでは、Googleスプレッドシートの「期限」列をもとに、期限が近いタスクだけをSlackへ自動通知する仕組みを作ります。使うのはGoogleスプレッドシートとMake、Slackです。基本的に無料プランで試せます。初めて自動化する場合でも手順に沿って進めれば30〜45分ほどで完成します。最後は「毎朝9時にSlackへ自動通知」するところまで設定します。

2. 今回作る自動化の仕組みの全体像

仕組みはそれほど難しくありません。まずスプレッドシートにタスク一覧を作り、期限が近いものを数式で判定します。Makeが決めた時間にシートを確認し、通知対象になっているタスクをSlackへ投稿します。投稿が終わったら「通知済」の列を更新するため、同じタスクを何度も通知するのも防げます。

  • データ源:Googleスプレッドシート(期限・担当者など)
  • 判定:シートの数式で「通知対象」を自動判定
  • 実行:Makeが設定した時間に起動してSlackへ投稿
  • 再発防止:投稿後にシートの「通知済」を「はい」に更新

3. 事前に必要なアカウント・準備物

ツール 用途 無料/課金 必要なもの
Googleアカウント スプレッドシートの作成・保管 無料 スプレッドシートURL
Slackワークスペース 通知の受け取り 無料プラン可 通知先チャンネル/アプリ追加の許可
Make(make.com) ノーコード自動化の実行 無料プラン可 Google/Slack連携の認可

今回のような小さな自動化なら無料プランで試せます。Makeの無料プランは月1,000クレジットまで利用でき、スケジュール実行は15分間隔が最短です。毎朝1回の通知なら十分試せる範囲です。 会社のSlackでアプリ追加が制限されている場合は、事前に管理者へ相談しておくとスムーズです。

4. 必要なツール、アカウントの設定

4-1. スプレッドシートの雛形を作る(判定は数式に任せる)

まずはスプレッドシートを用意します。下記の列を左から並べてください。あとでMakeから各項目を指定しやすくするため、この順番にしておくと作業が楽です。

  • A: タスク名
  • B: 期限(yyyy/mm/dd 形式の日付にする)
  • C: 担当者(任意)
  • D: 通知先チャンネル(例: #総務 or #tasks)
  • E: 通知済(空欄/はい)
  • F: 通知対象(TRUE/FALSE を数式で自動判定)

F2セルに下記の数式を入れ、必要な行までコピーしてください。Make側で条件を細かく設定するよりも、スプレッドシート側で通知対象を決めておくと全体の構成が分かりやすくなります。

数式例(B列が期限、E列が通知済の場合)

=AND($B2<>"", TODAY()<= $B2, $B2 - TODAY() <= 2, $E2 <> "はい")

この式では、期限が今日以降で2日以内かつ「通知済」が「はい」になっていない行をTRUEにします。3日前から通知したい場合は「<= 2」を「<= 3」に変更してください。まずはテスト用のデータで動きを確認すると分かりやすいです。

テスト用に2〜3行ほど用意し、期限を今日や明日などに設定しておきましょう。F列がTRUEになるか確認しておくと後の設定がスムーズです。

4-2. Slackで通知先チャンネルを用意する

通知を受け取るチャンネルを1つ決めておきます。最初は「#期限アラート」のようなテスト用チャンネルを作っておくと便利です。普段の会話に通知が混ざらないので、メッセージの内容も調整しやすくなります。

4-3. Makeアカウント登録(無料)

make.comで無料アカウントを作成します。現在の無料プランは月1,000クレジットまで利用でき、スケジュール実行は15分間隔が最短です。クレジットはモジュールの実行などで消費されます。 登録後はダッシュボードを開き、「Create scenario」からシナリオ(自動化フロー)を作成します。

5. 自動化ツールの設定

5-1. シナリオを新規作成し、Google Sheetsを接続

シナリオの編集画面で「+」を押し、Google Sheetsの「Watch New Roes」というモジュールを追加します。初回はGoogleアカウントへのアクセス許可を求められるので、画面の案内に沿って接続してください。Makeからスプレッドシートを読み書きするために必要な設定です。接続できたら対象のスプレッドシートとワークシート(タブ)を選びます。

5-2. 「通知対象=TRUE」だけを取得する設定

Google Sheetsには行を検索するモジュールがあります。「Spreadsheet ID」に先ほど作ったシート名、「Sheet Name」は変えていなければ「シート1」を入力してください。


これを使ってF列の「通知対象」がTRUEになっている行だけを取得します。画面の名称は時期や設定によって多少異なる場合がありますが、基本的には次のような方法で設定できます。

  • 「通知対象」がTRUEの行を検索する
  • 範囲を取得してから次のフィルタで「通知対象 == true」に絞り込む

最初から対象の行だけに絞っておけば、その後のSlack投稿やシート更新もシンプルになります。なお検索モジュールは複数行をまとめて返せるため、タスクが複数あっても1回の検索で処理できます。 画面で迷った場合は、まず行検索を使う方法から試してみましょう。

モジュールが1つだけだとフィルターの表示が出ないので、先に次の手順のSlackモジュールを追加してからその間のドットをクリックします。

5-3. Slackへ投稿するモジュールを追加

Google Sheetsの右側に「+」を押し、Slackのメッセージ投稿用モジュールである「Send a Message」を追加します。初回はSlackへの接続を求められるので許可してください。これでMakeからSlackへメッセージを送れるようになります。投稿先には4-2で用意したチャンネルを指定します。

メッセージ本文にはスプレッドシートの値を差し込めます。たとえば次のようにすると内容が分かりやすくなります。

例)⏰期限が近いタスクのお知らせ タスク: {{タスク名}} 期限: {{期限}} 担当: {{担当者}} チャンネル: {{通知先チャンネル}}

誰が何をいつまでに対応するのかがすぐ分かる形にしておくと、通知が増えても確認しやすくなります。最初は装飾を増やすより必要な情報を絞るのがおすすめです。

5-4. 「通知済」を自動で更新する

Slackへの投稿が終わったら、Google Sheetsの行を更新するモジュールの「Update a Row」を追加します。

ここで該当行のE列を「はい」に変更します。更新する行を間違えないように、最初のGoogle Sheetsモジュールから取得した行番号などの識別情報を指定してください。
Spreadsheet Name:最初に作成したスプレッドシート名
Sheet Name:変更してなければ「シート1」
Row number:{Row number}
Values in columns > 通知済 (E):はい

5-5. フローの並びとフィルタ

最小構成は次の順番です。Google Sheets(通知対象を取得)→ Slack投稿 → Google Sheets(通知済を「はい」に更新)。もし最初に範囲全体を取得する方法を選んだ場合は、Google Sheetsの直後にフィルタを入れます。「通知対象 == true」の行だけがSlack投稿へ進むようにしてください。これで対象外のタスクまで通知されるのを防げます。

5-6. 実行スケジュールを設定

下部にある「Every 15 minutes」からシナリオのスケジュールを設定し、「Every day」などから実行する時間を指定します。たとえば毎朝9時に設定すれば、1日1回の期限チェックができます。無料プランでも15分間隔まで設定できるため、今回のような1日1回の通知なら問題ありません。 まずは毎朝1回で動かしてみて、必要になったら実行頻度を見直しましょう。

6. 動作確認(実際の質問例)

6-1. 即時テスト(手動実行)

Makeの「Run once」を押すと、その場でシナリオを1回実行できます。事前にテスト用の行を確認し、F列の「通知対象」がTRUEになっていることを確認してください。Slackに通知が届き、最後にE列が「はい」へ変われば一連の流れは成功です。


6-2. 想定テストケース

  • 期限が明日、通知済は空欄 → 通知される
  • 期限が1週間後、通知済は空欄 → 通知されない
  • 期限が今日、通知済が「はい」 → 通知されない(重複防止)

思ったように動かない場合も慌てる必要はありません。Makeのログや実行履歴を確認すると、どのモジュールで止まったのかを追いやすくなります。

7. うまく動かないときのチェックポイント

7-1. スプレッドシート側の確認

  • 日付書式か:B列が「プレーンテキスト」になっていないか確認します。「表示形式→数字→日付」などから日付形式に変更してください。
  • 数式の範囲:F列の数式が必要な行までコピーされていますか。
  • 計算結果:テスト行でF列がTRUEになっていますか。E列が「はい」になっていないかも確認します。
  • ファイルの場所:個人ドライブでも共有ドライブでも構いませんが、Makeに接続したGoogleアカウントから対象ファイルを開けるか確認します。

7-2. Make側の確認

  • 接続の権限:GoogleとSlackの接続が正常に設定されているか確認します。
  • モジュール選択:Google Sheetsで通知対象の行を取得できる設定になっているか確認します。迷ったら一度範囲を取得し、後段のフィルタでTRUEに絞る方法でも構いません。
  • マッピング:Slack本文に「タスク名」「期限」など正しい項目が差し込まれているか確認します。
  • 更新先:行更新モジュールで対象行を特定するための行番号などを正しく指定しているか確認します。
  • スケジュール:シナリオが有効になっているか確認します。手動のRun onceでは動くのに自動実行されない場合は、まずスケジュール設定を確認しましょう。

7-3. Slack側の確認

  • チャンネル指定:プライベートチャンネルを使う場合は、Make側でそのチャンネルへ投稿できるように設定されているか確認します。必要に応じてMakeのアプリをチャンネルへ追加してください。
  • 権限:ワークスペース側で外部アプリやアプリ連携が制限されていないか確認します。制限されている場合は管理者の承認が必要になることがあります。
  • 通知ミュート:Slack側でチャンネルをミュートしていないか確認します。テスト中は通知設定も確認しておくと安心です。

それでも解決しない場合は、Makeの実行履歴を開いて各モジュールの結果を確認しましょう。エラーが出ていれば内容を確認し、どの処理で止まったのかを順番に追っていくと原因を絞り込めます。

8. 次にできる改善アイデア

  • 通知の猶予日数を可変に:シートに「通知◯日前」列を作り、タスクごとに通知するタイミングを変えられるようにする。
  • 担当者へDM:SlackのユーザーIDなどを管理しておき、チャンネルではなく担当者へのDMとして通知する。個別のアクションを促したい場合に便利です。
  • 再通知の間隔:最初の通知後も期限当日に再通知するなど、用途に合わせて段階的に通知する。
  • スレッド化:同じタスクに関する続報をスレッドへまとめ、やり取りを追いやすくする。
  • Googleカレンダー連携:期限をカレンダーにも登録し、タスクの締切を別の場所からも確認できるようにする。
  • Zapier/IFTTT代替:会社の方針などでMakeが使えない場合は、ZapierやIFTTTなど別の自動化サービスで同じような仕組みを作る方法もあります。

まずは「毎朝の期限通知が自動で届く」状態まで作れれば十分です。実際に使ってみると、通知が多すぎる場面や追加したい条件も見えてきます。最初から複雑にせず、使いながら少しずつ整えていきましょう。