Claude Code × openpyxl でExcelの変化を検知してSlack・メール自動通知する

Claude CodeでExcelの変化を自動検知してSlack・メールに通知するPythonスクリプトを作成する方法を解説。売上急落・在庫切れ・期限超過を即座に検知。毎朝自動チェックの設定方法も紹介。

この記事をシェア:
目次 クリックで開く

📅 2025年10月 | ⏱ 読了約8分 | 🏷 Claude Code・業務自動化

売上急落・在庫切れ・期限超過をExcelで自動検知。SlackとメールにアラートをPythonで自動送信する完全自動化ガイド。

KPI自動アラートダッシュボードデモ
📊 Claude Code 生成デモ

KPI自動アラートダッシュボードデモ

↑ Claude Code が自動生成した実際の成果物サンプル。このクオリティが数分で完成します。

Excel変化検知通知で問題を即座に把握

「在庫が切れていたのに気づかなかった」「売上が急落していたのに翌日まで発見できなかった」――このような「後手の対応」は、多くの企業でExcelファイルの手動確認に頼っていることが根本原因です。Claude Code + openpyxl + smtplib(Slack webhook)を使えば、Excelの変化を自動で検知してリアルタイムに通知する仕組みを構築できます。

このシステムの最大のメリットは 「担当者が不在でも監視が継続する」 点です。休暇中・出張中・深夜でも、スクリプトが自動でExcelをチェックし、問題が発生した瞬間に関係者全員に通知が届きます。「確認漏れ」という概念そのものをなくすことができます。

📌 この記事で解決できる課題

  • 毎朝担当者がExcelを開いて目視確認する「張り付き業務」を排除したい
  • 担当者の休暇中に売上急落や在庫切れが発見されないリスクを防ぎたい
  • 問題発生から対応着手までのタイムラグを最小化したい
  • 複数のExcelファイルを一元的に監視する仕組みが欲しい

Excelのデータを定期チェックして、異常値・期限超過・在庫切れを自動検知しSlack・メールで即通知するシステムをClaude Code + openpyxl で構築します。

ステップ1:売上急落を自動検知してSlack通知

💬 Claude Code へのプロンプトExcelの売上データを読んで前日比20%以上の急落を検知したら
Slackに自動通知するスクリプトを作成して
import openpyxl, requests, json
from datetime import date

SLACK_WEBHOOK = "https://hooks.slack.com/services/xxx/yyy/zzz"

wb = openpyxl.load_workbook("売上モニタリング.xlsx")
ws = wb.active

alerts = []
prev_val = None

for row in ws.iter_rows(min_row=2, values_only=True):
    dt, sales = row[0], row[1]
    if prev_val and sales and prev_val:
        drop_rate = (prev_val - sales) / prev_val
        if drop_rate >= 0.20:
            alerts.append(f"⚠️ {dt}: 売上急落 {drop_rate*100:.1f}%減 "
                          f"({prev_val:,}→{sales:,}万円)")
    prev_val = sales

if alerts:
    payload = {"text": "【売上アラート】\n" + "\n".join(alerts)}
    requests.post(SLACK_WEBHOOK, data=json.dumps(payload))
    print(f"Slackアラート送信: {len(alerts)}件")
else:
    print("異常なし")
✅ 実行結果

売上急落を自動検知してSlack通知。問題発生から対応まで時間を大幅短縮。

ステップ2:在庫切れを検知してメール通知

import openpyxl, smtplib
from email.mime.text import MIMEText

wb = openpyxl.load_workbook("在庫管理.xlsx")
ws = wb.active
THRESHOLD = 10  # 閾値(10個以下でアラート)
stockouts = []

for row in ws.iter_rows(min_row=2, values_only=True):
    item_name, stock, reorder = row[0], row[1], row[2]
    if stock is not None and stock <= THRESHOLD:
        stockouts.append(f"  {item_name}: 残{stock}個(発注点: {reorder}個)")

if stockouts:
    body = "在庫切れ・低在庫アラート\n\n" + "\n".join(stockouts)
    msg = MIMEText(body, "plain", "utf-8")
    msg["Subject"] = f"【在庫アラート】{len(stockouts)}品目が低在庫"
    msg["From"] = "bot@example.com"
    msg["To"]   = "warehouse@example.com"
    with smtplib.SMTP("smtp.example.com", 587) as s:
        s.starttls(); s.login("bot@example.com","pw"); s.send_message(msg)
    print(f"在庫アラート送信: {len(stockouts)}品目")
✅ 実行結果

在庫切れ品目を自動検知してメール通知。欠品による機会損失を防止。

在庫チェックスクリプトは複数の在庫ファイルを一括監視することも可能です。倉庫が複数ある場合や、商品カテゴリごとにExcelが分かれている場合でも、glob.glob("在庫_*.xlsx") で全ファイルを一括取得して処理できます。また、在庫切れの通知だけでなく「あと3日で切れる予測」のような予測アラートも、過去の消費ペースデータがあれば同じスクリプトで計算できます。

ステップ3:期限超過タスクを自動通知

import openpyxl, requests, json
from datetime import date

wb = openpyxl.load_workbook("タスク管理.xlsx")
ws = wb.active
TODAY = date.today()
overdue = []

for row in ws.iter_rows(min_row=2, values_only=True):
    task, assignee, deadline, status = row[:4]
    if (status != "完了" and isinstance(deadline, date)
            and deadline < TODAY):
        days_over = (TODAY - deadline).days
        overdue.append(f"• {task}(担当:{assignee}) {days_over}日超過")

if overdue:
    payload = {"text": f"【期限超過アラート】{len(overdue)}件\n" + "\n".join(overdue)}
    requests.post(SLACK_WEBHOOK, data=json.dumps(payload))
    print(f"期限超過アラート: {len(overdue)}件")
✅ 実行結果

期限超過タスクを自動検知してSlack通知。見落としゼロのタスク管理を実現。

ステップ4:スケジュール実行で毎朝自動チェック

import schedule, time

def daily_check():
    print("=== 毎朝9時 自動チェック開始 ===")
    # 売上チェック
    check_sales_drop()
    # 在庫チェック
    check_inventory()
    # 期限チェック
    check_deadlines()
    print("=== チェック完了 ===")

schedule.every().day.at("09:00").do(daily_check)

while True:
    schedule.run_pending()
    time.sleep(60)
✅ 実行結果

毎朝9時に自動でExcelをチェックしてアラート送信。朝のルーティン確認作業がゼロに。

Windowsタスクスケジューラでの自動実行設定は、GUIから5分で完了します。「基本タスクの作成」→「毎日トリガー」→「プログラムの開始(python.exe)」の3ステップで設定できます。実行ログは logging モジュールでテキストファイルに記録することを推奨します。スクリプトが失敗した場合のアラート(実行失敗通知)も、タスクスケジューラの「失敗時の動作」設定で追加メールを送るよう設定できます。

📊 自動化で得られる効果
⏱ 作業時間(Before) 毎朝手動確認:20分/日×250日=83時間/年
⚡ 自動化後(After) 自動検知・通知:手間ゼロ
確認コスト 年83時間→ゼロ
検知速度 朝イチ→リアルタイム
見落とし 目視確認ミス→ゼロ

実務での活用シナリオ

このスクリプトを実際の業務にどう活用するか、具体的なシーンをご紹介します。

  • 売上管理:日次売上が前月比80%を下回ったらSlack #sales-alert に即時通知。対応を翌日に持ち越さない。
  • 在庫管理:安全在庫を下回った品目を自動検知してメール通知。欠品による機会損失を防止。
  • プロジェクト管理:タスクの期限超過を自動検知し、担当者とマネージャー双方に同時通知。
  • 経理・締め管理:月次締め日の未提出レポートを検知し、担当部署に自動リマインドメールを送信。
  • 品質管理:製造ラインの不良率が閾値を超えた瞬間に工場長へ通知。問題の早期発見に貢献。

Slack Incoming Webhookの設定は3分で完了します。SlackワークスペースのApp設定から「Incoming Webhooks」を追加し、通知先チャンネルとWebhook URLを取得するだけです。URLは SLACK_WEBHOOK_URL という環境変数として設定することで、コードに直接書かずにセキュアに管理できます。通知メッセージにはExcelファイルへのリンク・異常値の詳細・対応推奨アクションを含めると、受信した担当者がすぐに行動できます。

導入前後の効果比較

😫 Before ─ 従来の課題

担当者が毎朝Excelファイルを開いて目視確認。売上急落や在庫切れを翌日以降に発見するケースが多く、対応が後手に回っていた。担当者が休暇中は誰も確認しない日も発生していた。

✅ After ─ Claude Code で解決

Pythonスクリプトがスケジュール実行でExcelを自動チェック。問題発生の即日・即時にSlackやメールで関係者全員に通知。担当者不在でも監視が継続する仕組みに。

導入のポイントと注意事項

💡 スムーズに運用するためのコツ

  • 通知のしきい値は保守的に設定し、最初は「重大問題のみ通知」から始めて徐々に細かくチューニングする
  • Slack通知はwebhook URLを環境変数として管理し、コードに直接書かない(セキュリティ対策)
  • スケジュール実行はWindowsタスクスケジューラまたはcronで設定。失敗時のリトライ処理も実装しておく
  • 通知文には「Excelファイルへのリンク」を含めることで、受信者がすぐに詳細確認できる

よくある質問(FAQ)

Q. Slackのwebhook URLはどこで取得できますか?
A. Slackのワークスペース設定 → Apps → Incoming Webhooks から取得できます。無料プランでも利用可能です。
Q. メール送信はGmailでも使えますか?
A. はい。Gmailの場合はsmtp.gmail.comを使用し、アプリパスワードを設定することで送信できます。
Q. 複数の担当者に通知を分けることはできますか?
A. Pythonの条件分岐で通知先を変えるだけです。Claude Codeに「在庫切れはAさん、売上異常はBさんへ通知」と指示するだけで対応コードを生成できます。

まとめ:Excel変化検知通知自動化で得られる効果

✅ 売上急落・在庫切れ・期限超過を 即時自動検知(翌日発見のリスクゼロ)

✅ Slack・メールで 関係者に自動通知(担当者不在でも継続監視)

✅ スケジュール実行で 毎朝自動チェック(手動確認の習慣が不要)

✅ 複数のExcelファイルを 一括監視(部門横断の管理も一元化)

監視の精度を高めるための応用テクニック

基本的な変化検知スクリプトに以下の処理を追加することで、より高精度・実用的な監視システムに発展させることができます。

応用テクニック 実装方法 効果
移動平均との比較 過去7日間の平均を計算し、当日値がその80%を下回ったら通知 一時的な変動と真の異常を区別
通知抑制(クールダウン) 同じ問題で1時間以内の重複通知をスキップ 通知疲れ(アラート過多)を防止
エスカレーション 問題が2時間以上継続したらマネージャーにも通知 重大問題を上位者に確実に伝達
週次サマリー 毎週月曜朝に過去1週間の異常発生件数・内容をレポート送信 傾向分析・根本原因特定を支援

これらの応用機能も、Claude Code に「移動平均との比較アラートを追加して」「2時間以上継続する問題はマネージャーにも通知して」と追加指示するだけで実装できます。一度基本スクリプトができてしまえば、機能追加も数分で完了します。

📊 ビジネスインパクト

問題の発見が「翌日以降」から「即時」に変わることで、対応の遅延によるビジネス損失を防止できます。売上急落への即応は1日の差で回復できるかどうかを左右することがあります。また、担当者が常にモニタリングし続ける「張り付き業務」がなくなることで、より付加価値の高い業務に集中できます。

🚀 次のステップ

さらに高度な分析として、機械学習を使った異常値検知(Prophet、Isolaton Forest)や、Excelデータの可視化ダッシュボード(Streamlit)との連携を検討することで、予測型の監視システムへと発展させることができます。

関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeで業務自動化を始めよう

自然言語で指示するだけでスクリプトを自動生成します。

無料で試してみる →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: