Googleスプレッドシートの異常値発生時に自動でSlackに警告する方法

当ブログがオススメする

業務自動化サービスランキング

なお、業務効率化や工数削減を目指しているものの、どの業務から自動化すべきか、どのツールや手段が自社に合っているのかがあいまいな方は、「業務自動化プラン診断」をお試しください。

かかる時間は1分ほど。4つの質問に答えるだけで、あなたに最適な自動化対象業務や、推奨される自動化手段を診断してもらえます。

効率よく自社に適した業務効率化を知りたい方は、ぜひ一度お試しください。

\ 4つの質問に答えるだけ /

目次

完成形イメージ

はじめに

業務でGoogleスプレッドシートを利用していると、「入力ミスに早く気づきたかった」「異常な数値を放置してしまった」という経験はありませんか?

本記事では、スプレッドシートに異常値が入力された際、自動的にSlackへ通知し、すぐに対応できる仕組みを作る方法をご紹介します。Google Apps Script(GAS)を活用することで、無料かつシンプルに導入可能です。ITに詳しくない方でも手順通りに進めれば再現できますので、ぜひ参考にしてください。

こんなシーンでの活用に適しています

この自動化は、以下のような場面で特に役立ちます。

  • 売上や在庫などの「閾値」を超えたら即座に気づきたいとき
  • プロジェクト進行管理で「未入力やエラー値」を検知したいとき
  • 毎日の入力作業で「数字の入力ミス」を防ぎたいとき
  • チーム全体にリアルタイムで「異常」を共有したいとき
  • 担当者不在時でもSlack通知でフォローできる体制を作りたいとき

Google Apps Scriptで自動化する

メリットリアルタイム通知:異常発生をすぐにキャッチできる
人的チェック不要:手作業でシートを確認する手間を削減
Slackで共有:担当者だけでなくチーム全体に周知できる
無料で実装可能:追加費用なし、GASとSlackのWebhookのみで構築できる
柔軟な条件設定:閾値やキーワードなど、自分の業務に合わせてカスタマイズ可能
デメリット初期設定に時間がかかる:Webhookの発行やGASの設定が必要
トリガーの仕様制限:Googleの制限により、処理回数や速度に制約がある
エラー対応が必要:通知が届かない場合、GASの権限やログを確認する手間がある
複雑な条件設定はスクリプト修正が必須:非エンジニアにはハードルになることも
難易度・面倒さ難易度:★★☆☆☆(2/5)
プログラミング未経験者でも手順通りに進めれば可能。
面倒さ:最初のWebhook発行とGASの権限付与にやや手間があるが、一度設定してしまえば放置運用可能。
特徴Google公式のスクリプト環境(Apps Script)を利用するため、追加アプリは不要
Slack通知はWebhook方式で、他のサービスとも応用可能
カスタマイズ次第で「セル範囲監視」「複数条件」「通知内容の装飾」など拡張性が高い
完全無料で導入でき、社内の小規模プロジェクトでも気軽に始められる
価格無料で導入可能
Googleスプレッドシート:無料(Googleアカウントがあれば利用可)
Google Apps Script:無料
SlackのIncoming Webhook:無料
追加コストゼロで実現できます。

用意するもの

  • Google アカウント(Gmail が使える状態)
  • Slack アカウント(通知を送りたいワークスペースに参加済み)
  • 進捗管理用の Google スプレッドシート

設定手順

🔹Step 1:Slack で Webhook URL を作成する

ブラウザで https://api.slack.com/apps を開く。

右上の [Create New App](新しいアプリを作成) をクリック。

[From scratch] を選び、アプリ名を入力(例:Sheets Notifier)。

対象ワークスペースを選んで [Create App]


左メニューの Features > Incoming Webhooks を開く。


上部のスイッチ [Activate Incoming Webhooks]On にする。

ページ下部の [Add New Webhook to Workspace] をクリック。


通知を送りたい チャンネル(例:#project-progress)を選んで [Allow](許可)


表示された Webhook URL[Copy](コピー) を押して、メモ帳などに貼り付けて保存。

Webhook URL は例:https://hooks.slack.com/services/XXXX/YYYY/ZZZZ のような長い文字列です。外部に漏らさないでください。

🔹Step 2:スプレッドシートを用意する

Google スプレッドシートを開く(既にある場合はそれを開く)。

例として、Sheet1 の B2 セルを監視するとします。

B2に数値が入り、100以上なら異常と判定する例で進めます。

🔹Step 3:GAS(スクリプト)を設定する

  1. スプレッドシートの上部メニューから [拡張機能] > [Apps Script] をクリック。
  2. 新しいタブでエディタが開きます。左上の「無題のプロジェクト」をクリックし、
    プロジェクト名を変更。
  3. 画面中央の Code.gs に、下記 を丸ごと貼り付けます。
  4. 左上の フロッピーディスクアイコン(保存) をクリック。
const WEBHOOK_URL = "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXX"; // ← Slackで取得したWebhook
const SHEET_NAME = "Sheet1"; // 監視するシート名
const WATCH_CELL = "B2";     // 監視するセル(例:B2)
const THRESHOLD = 100;       // 数値閾値(この例では 100 以上を異常と判定)
const MODE = "number_gte";   // 判定モード("number_gte" | "contains" | "is_blank")
const KEYWORD = "エラー";     // MODE="contains" の場合にチェックするキーワード
// ------------------------------------------------------------------------

/**
 * インストール型トリガー(編集時)で動く関数です。
 * トリガー設定でこの関数名(checkCellEdit)を選択してください。
 */
function checkCellEdit(e) {
  try {
    if (!e || !e.range) return; // e が無ければ何もしない(安全対策)
    const range = e.range;
    const sheet = range.getSheet();
    if (sheet.getName() !== SHEET_NAME) return; // 指定シート以外は無視
    if (range.getA1Notation() !== WATCH_CELL) return; // 指定セル以外は無視

    const value = range.getValue(); // 編集後の値を取得
    const valueText = String(value);

    // 異常判定
    let isAbnormal = false;
    if (MODE === "number_gte") {
      const num = Number(value);
      if (!isNaN(num) && num >= THRESHOLD) isAbnormal = true;
    } else if (MODE === "contains") {
      if (valueText.indexOf(KEYWORD) !== -1) isAbnormal = true;
    } else if (MODE === "is_blank") {
      if (value === "" || value === null) isAbnormal = true;
    }

    if (isAbnormal) {
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const link = ss.getUrl() + "#gid=" + sheet.getSheetId() + "&range=" + WATCH_CELL;
      const message =
        "⚠️ *異常値を検出しました*\n" +
        "・スプレッドシート: <" + ss.getUrl() + "|開く>\n" +
        "・シート: " + SHEET_NAME + "\n" +
        "・セル: " + WATCH_CELL + "\n" +
        "・入力値: " + valueText + "\n" +
        (MODE === "number_gte" ? ("・閾値: " + THRESHOLD + " 以上\n") : "") +
        "(" + new Date().toLocaleString() + ")";
      sendToSlack(message);
    }
  } catch (err) {
    // エラーはログに残す(Apps Script画面の「実行」→「ログ」または「実行ログ」を確認)
    Logger.log("checkCellEdit error: " + err);
  }
}

/**
 * Slackへ送信する汎用関数
 */
function sendToSlack(message) {
  const payload = { text: message };
  const options = {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };
  const resp = UrlFetchApp.fetch(WEBHOOK_URL, options);
  Logger.log("Slack resp: " + resp.getResponseCode());
}

/**
 * テスト用(手動で実行してWebhookが動くか確認する用)
 */
function sendTestSlack() {
  sendToSlack("テスト通知: Webhookの動作確認ができました。");
}

ポイント

  • 上のコード中の https://hooks.slack.com/… を あなたの Webhook URL に差し替えてください。

🔹Step 4:権限を許可してテストする

  1. 画面上部の保存アイコンをクリック(プロジェクト名を求められたら分かりやすい名前でOK)。
  2. サイドメニュー(関数選択)から sendTestSlack を選び、▶(実行)をクリック。
  3. 「権限が必要です」と表示されたら、自分のGoogleアカウントを選び、画面の案内で許可を与えてください。
    • ※初回は「このアプリは確認されていません」と出ることがあります → 「詳細」→「○○(プロジェクト名)に移動(安全でないページ)」→ 許可 の流れで進めます(自分で作ったスクリプトなので許可して問題ありません)。
  4. Slackに「テスト通知: Webhookの動作確認ができました。」が届けばWebhookはOK。

こちらの処理は初回実行時のみ必要です。

🔹Step 5:自動実行の「トリガー」を設定する

※単純な onEdit(自動関数)だと外部通信ができません。Slackに送るためにインストール型トリガー(編集時) を作ります。

  1. Apps Script エディタの左側メニューで「トリガー(時計アイコン)」をクリック。
  2. 「トリガーを追加」ボタンを押す。下記のように設定します:
    • 実行する関数を選択:checkCellEdit
    • イベントのソースを選択:From spreadsheet(スプレッドシート)
    • イベントの種類を選択:On edit(編集時)
    • 保存する(OK)
  3. 最初の実行で再び権限を求められたら許可してください。

これでスプレッドシートが編集されるたびに checkCellEdit が呼ばれます(インストール型は UrlFetchApp が使えます)。

🔹Step6:動作確認

  1. Sheet1 の B2 に 50 を入れる → 通知されない(正常)。
  2. B2 に 150 を入れる → Slack に通知が届くはず。
  3. 通知の文面にはシート名・セル・値・タイムスタンプが含まれます。

よくある質問

通知が多すぎて困ります。調整できますか?

はい。対象となるシートや列を指定することで、必要な更新だけを通知するように調整できます。

誰が更新したかはSlackで分かりますか?

GASでは直接取得できませんが、Googleスプレッドシートの「変更履歴」から確認可能です。運用ルールとして「更新者の名前を入力する列」を作るとより便利です。

初心者でも本当にできますか?

はい。記事内で紹介しているコードをそのまま貼り付ければ動作します。唯一の注意点は「Webhook URLを正しく設定する」ことだけです。

なかなかうまくいかないときは?

プログラミングが未経験の方にとっては少しハードルが高く「諦めるしかない⋯」と挫折するきっかけを生みかねません。

「社内で自動化したは良いものの、自分がやめたら引き継ぐ人がいない⋯」

「一つ自動化したら、他部署からも自動化を依頼されて自分の仕事が進まない⋯」

と不安な方もいますよね。

そこで、おすすめしたいのが「ジドウカ」です。

ジドウカは、これまで合計800タスク以上の業務の自動化をしてきた実績のある法人専用の自動化サービスです。

業務の一部を“タスク単位”で自動化し、【月額1万円から】安定運用できるサブスクリプション型のサービスです。 タスクを外注するため手離れもよく、技術のことが分からなくても、「こういう作業をラクにしたい」と伝えるだけで自動化することが可能です。

「わたしが自動化したい内容って自動化できるんだろうか⋯」という方には、少額・短期間での「お試し開発」があるので、お気軽にご活用ください。

まとめ

Googleスプレッドシートの更新をSlackに自動通知する仕組みは、無料で導入できて効果が大きい業務効率化の第一歩です。最初に一度設定してしまえば、以後は放置でOK。チーム全員がリアルタイムで進捗を共有できるようになり、会議の準備や進捗確認の時間を大幅に削減できます。

「毎日スプレッドシートを開いて確認するのが面倒」「更新の見落としを防ぎたい」という方は、ぜひ本記事を参考に導入してみてください。

自社で自動化する際によくある失敗ランキング

自動化ツールを導入すれば業務が自動化され、効率が劇的に向上する——。 そう考えている企業は多いですが、実際には多くの企業が自動化ツールを十分に活用できていません。 有名な自動化ツールであるRPAを例にあげても、導入した企業の実態は理想と大きく異なった結果となっています。

RPA導入企業の約60%が「あまり活用できていない」と回答

多くの企業がRPAを導入しているにも関わらず、約60%の企業が「期待したほど活用できていない」と感じているというデータです。これは、「導入しただけでは、業務改善につながらない」という現実を示しています。

RPAの効果を実感できない要因は『RPA開発が進んでいない』

「RPAの効果を実感できていない」と回答した企業の多くが、その理由として「RPA開発が進んでいない」「他業務・他部署への展開ができていない」ことを挙げています。   「〇〇業務はツールを導入すればすぐにラクになるはず」と思って、自社で自動化に挑戦した方も多いのではないでしょうか?しかし私たちには、こんな“あるあるの失敗談”がよく届きます。

🥇 第1位:初期設定でつまずき、結局断念…

思っていたより設定が複雑で、ツールの仕様を理解する前に挫折してしまうケース。 特にRPAツールやノーコードツールは、「慣れるまでが大変」という声が多いです。

🥈 第2位:担当者が辞めて、運用不能に…

担当者が社内で唯一のキーマンだった場合、その人がいなくなると全て止まってしまうという問題が発生します。 しかも、「誰も中身が分からないから触れない」という状況になりがち。

🥉 第3位:不具合や修正対応に時間がかかる…

自動化が止まったとき、「誰が見ればいいのか分からない」「ベンダーに相談するのも手間」という理由で、対応が後手に。 気づけばその対応に何時間も時間を取られ、本業に集中できなくなってしまうことも…。   実はよくある…自社で自動化に挑戦したときの“落とし穴” 共通するのは「すべて自社で完結しようとした」こと。 このようなケースに共通するのが、「最初から最後まで、すべて自社で完結しようとした」点です。 最初はうまくいっても、長期的に安定した自動化運用には、継続的な保守や柔軟な調整が不可欠です。

安定的に自動化したいならジドウカがおすすめ

 「ツールを入れただけ」では業務はラクになりません 「業務をラクにする自動化」のためには、設定・運用・トラブル対応まで含めてプロに任せるのが最も確実です。

ジドウカとは?

業務の一部を“タスク単位”で自動化し、月額で安定運用できるサブスクリプション型のサービスです。 技術のことが分からなくても、「こういう作業をラクにしたい」と伝えるだけでOK。

ジドウカでできること(業務例)

・定期レポートの自動作成とSlack送信 ・受注データのExcel整形とkintone登録 ・競合サイトの自動モニタリングとアラート通知 ・営業リストの自動生成とCRMへの投入 など

ジドウカが選ばれる理由

弊社の自動化サービス「ジドウカ」は、1社1社、1タスク1タスクに合わせて完全オーダーメイドで開発するサービス担っています。
  • ヒアリングから開発・運用まで丸ごとサポート
  • トラブル発生時には即時対応
  • 月額料金内で自由に修正をご依頼可能
実際に多くのお客様から「自社での自動化運用に失敗した後に依頼してよかった」と高評価をいただいています。
目次