Media > AI活用ユースケース > 購買 > 建材商社・メーカーから届く資材の納品予定・欠品・遅れの連絡メールを読み取り、現場ごとの資材手配表を更新して、使う日に間に合わない資材を現場監督に知らせる

建材商社・メーカーから届く資材の納品予定・欠品・遅れの連絡メールを読み取り、現場ごとの資材手配表を更新して、使う日に間に合わない資材を現場監督に知らせる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

建材商社やメーカーから届く納品予定・欠品・入荷遅れの連絡メールを読み取り、注文番号・品名・数量・納品予定日を取り出して、現場ごとの資材手配表を書き換えます。現場で使う日に間に合わなくなった資材だけを、その現場の監督に知らせます。

サマリー
生成AI
Azure OpenAI Service/Claude
連携・自動化
Make/Power Automate/Zapier
対象業界
不動産/建設/製造
対象部門
購買
対象業務
データ入力・転記/台帳・マスタ管理
主な課題
入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
抽出
主な効果
入力漏れ削減/対応スピード向上/工数削減
導入難易度
★☆☆☆☆
実装レベル
半自動化
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
60h/月
AI導入後
20h/月
想定削減
67%
年間削減
480h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 資材担当が共有メールボックスを開き、届いた連絡を上から順に読む
  2. 本文と添付の納品予定表から、どの注文の連絡かを注文番号・現場名・品名で探す
  3. SharePoint の手配表で該当する行を探し、納品予定日・数量・状態を書き換える
  4. 書き換えた納品予定日と使用予定日を見比べ、間に合わないものを拾う
  5. 間に合わないものは、現場監督に電話するか Teams でメッセージを送る
  6. 欠品で代わりの品が提案されているものは、現場監督に判断を仰ぐメールを書く
  7. 読み終えたメールを「処理済み」のフォルダへ移す
導入後(After)
  1. 自動共有メールボックスに連絡が届くと、Power Automate のフローが動く
  2. 自動送信者が取引先の一覧にあるかを確かめ、添付の納品予定表を取り出す
  3. 自動AI Builder のプロンプトが本文と添付を読み、注文ごとに注文番号・現場・品名・規格・数量・納品予定日・連絡の種類を JSON で返す
  4. 自動注文番号で手配表の行を引く。引けたものは納品予定日・数量・状態を書き換える
  5. 自動新しい納品予定日と使用予定日を比べ、間に合わないものに「遅れ」の印を付ける
  6. 自動遅れの印が付いたものだけ、その現場の Teams のチャネルへ監督あてに投稿する
  7. 人資材担当が、行を引けなかったもの・欠品で代わりの品が提案されたもの・分納を確かめる
  8. 人現場監督が、遅れへの対応(待つ、代わりの品、工程の組み替え)を決める
  9. 自動処理が終わったメールを「処理済み」フォルダへ移し、処理の記録を残す
各工程の詳しい説明を読む
  1. 資材担当が共有メールボックスを開き、届いた連絡を上から順に読む
  2. 本文と添付の納品予定表から、どの注文の連絡かを注文番号・現場名・品名で探す
  3. SharePoint の手配表で該当する行を探し、納品予定日・数量・状態を書き換える
  4. 書き換えた納品予定日と使用予定日を見比べ、間に合わないものを拾う
  5. 間に合わないものは、現場監督に電話するか Teams でメッセージを送る
  6. 欠品で代わりの品が提案されているものは、現場監督に判断を仰ぐメールを書く
  7. 読み終えたメールを「処理済み」のフォルダへ移す

(a)書き写すだけで1日が終わる。 600件を3名で受けると、1人1日10件前後です。1件ごとに判断らしい判断はほとんどなく、注文を探して、日付と数量を写して、見比べているだけです。 それでも1件6分かかり、資材担当の本来の仕事である価格の交渉や、代わりの仕入先探しに手が回りません。

(b)遅れが現場監督に届くのが遅い。 メールは午後にまとめて読むことが多く、朝に届いた「明日の納品が1週間遅れる」という連絡が、監督に伝わるのは夕方になります。 翌朝の職人の手配はもう取り消せない時間です。

(c)どの注文の連絡かを取り違える。 商社のメールには、自社の注文番号ではなく商社の受注番号しか書かれていないことがあります。現場名も「〇〇邸」「〇〇ビル新築」「〇〇2期」と略し方がまちまちです。品名と数量で当たりを付けて書き換え、別の現場の行を直してしまうことが、月に何度か起きます。

(d)分納と取り消しが埋もれる。 「30枚のうち20枚を先に納め、残りは来週」という分納の連絡は、手配表の1行に日付が2つ要ります。1つしか書けないので、先に来る日付だけを書いて残りが消えます。 現場では、残りの10枚がいつ来るのか誰も知らない状態になります。

  1. 【自動】 共有メールボックスに連絡が届くと、Power Automate のフローが動く
  2. 【自動】 送信者が取引先の一覧にあるかを確かめ、添付の納品予定表を取り出す
  3. 【自動】 AI Builder のプロンプトが本文と添付を読み、注文ごとに注文番号・現場・品名・規格・数量・納品予定日・連絡の種類を JSON で返す
  4. 【自動】 注文番号で手配表の行を引く。引けたものは納品予定日・数量・状態を書き換える
  5. 【自動】 新しい納品予定日と使用予定日を比べ、間に合わないものに「遅れ」の印を付ける
  6. 【自動】 遅れの印が付いたものだけ、その現場の Teams のチャネルへ監督あてに投稿する
  7. 【人】 資材担当が、行を引けなかったもの・欠品で代わりの品が提案されたもの・分納を確かめる
  8. 【人】 現場監督が、遅れへの対応(待つ、代わりの品、工程の組み替え)を決める
  9. 【自動】 処理が終わったメールを「処理済み」フォルダへ移し、処理の記録を残す

7番目が、この設計の分かれ目です。人が見るのは全件ではありません。 注文番号で行が引けて、数量も合っていて、使用予定日に間に合う連絡は、手配表が書き換わったことを一覧で流し見て終わりです。 資材担当が時間を使うのは、引けなかったもの、欠品、分納の3つだけです。

5番目をAIにさせないのも、意図してのことです。 「間に合うか」は日付の比較で決まり、比べる日付は手配表の側にあります。AIの判断を挟む理由がありません。 現場ごとに「使用予定日の何日前までに届けばよいか」の余裕日数を変えたいときも、直すのはフローの条件だけです。

02今回想定するシステム構成

構成図
建材商社・メーカーの連絡メール(本文/添付の納品予定表PDF)
   │
   ▼【トリガー】共有メールボックスへの着信
Power Automate(クラウド フロー)
   ├──▶ 送信者を取引先の一覧と照合
   ├──▶ 添付の取り出し(Get Attachment)
   ▼
AI Builder のプロンプト(プロンプトを実行する)
   │   注文ごとに 注文番号/現場/品名/規格/数量/納品予定日/連絡の種類
   ▼
Power Automate ── 手配表(SharePoint のリスト)を注文番号で引く
   ├─ 引けた ──▶ 納品予定日・数量・状態を書き換え ──▶ 使用予定日と比較
   │                                   └─ 間に合わない ──▶ Teams の現場チャネルへ
   └─ 引けない/欠品/分納 ──▶ 資材担当の確認待ちの一覧へ
   ▼
処理済みフォルダへ移動・処理の記録
役割想定する製品代替候補
ワークフローPower Automate(クラウド フロー、Office 365 Outlook コネクタ)Make、Zapier
生成AIAI Builder のプロンプト(「プロンプトを実行する」アクション、ドキュメント入力と JSON 出力)Azure OpenAI(Microsoft Foundry)、Claude
保管SharePoint のリスト(資材手配表、取引先の一覧、確認待ちの一覧、処理の記録)Dataverse
通知Microsoft Teams の現場ごとのチャネルOutlook のメール

新しく足すのは、フローと、取引先の一覧・確認待ちの一覧・処理の記録の3つのリストです。 手配表はいまの SharePoint のリストを使い、列を3つだけ足します。 「最後に自動で書き換えた日時」「書き換えの元になったメール」「残りの数量の納品予定日」です。3つ目は第3章の(d)の分納のための列です。

トリガーには、Office 365 Outlook コネクタの「When a new email arrives in a shared mailbox (V2)」を使います。 コネクタの既知の問題には、多くのメールが同時に届くと、仕組み上の制約でトリガーがメールを取りこぼすことがまれにあると書かれています。商社の連絡は夕方にまとまって届くので、第7章で毎朝の突き合わせを足します。

添付の納品予定表は、プロンプトの画像またはドキュメントの入力で渡します。 対応するのは PNG、JPG、JPEG、PDF で、渡すファイルの合計は25MB未満、ページ数は50ページ未満、処理は最大100秒とされています。大きな文書では、特に表の行の情報が不正確または不完全になる可能性があるとも書かれています。納品予定表は1〜3ページの表が多いので収まりますが、月末に1か月分を1枚の表にまとめて送ってくる商社には注意が要ります。

プロンプトは、Azure OpenAI サービスを活用した GPT モデルで動きます。 機能は一部の地域に限られ、使用制限または容量帯域幅調整の対象になる場合があるとされています。日本では GPT-4.1 mini などが「GA(クロスジオ)」で、クロスジオのモデルはリージョン外でデータを処理する可能性があります。 扱うのは取引先と現場名と資材の情報で、個人の情報はほとんど入りませんが、第13章で扱いを決めます。

03どうやって実装するのか

Step1

処理の起点を決める

資材課の共有メールボックスへの着信を起点にします。 トリガーは「When a new email arrives in a shared mailbox (V2)」で、フォルダは受信トレイ、添付ありに絞らない設定にします。 本文だけで納品日を知らせてくる商社が多いからです。

1日1回のまとめ処理にはしません。 朝に届いた「明日の納品が遅れる」という連絡を夕方に処理すると、第3章の(b)がそのまま残ります。届いたその時に動かし、遅れを監督に届けるまでを数分で終えます。

取りこぼしへの備えを、最初から入れます。 コネクタの既知の問題のとおり、同時に多く届くとトリガーがまれにメールを拾い損ねます。毎朝7時に動く2本目のフローで、受信トレイに残っている前日以前のメールを数え、処理の記録に無いものを拾い直します。 処理が終わったメールは「処理済み」フォルダへ移すので、受信トレイに残っている数が、そのまま未処理の数になります。

トリガーは受け取った日時で動きます。 フォルダを移しても受け取った日時は変わらないため、一度移したメールを受信トレイへ戻しても、トリガーは拾い直さないことがあります。 やり直したいメールは、確認待ちの一覧から2本目のフローを手で動かして処理します。

Step2

入力データを集める

データ中身取得元
連絡メール送信者、件名、本文、受け取った日時共有メールボックス
添付の納品予定表PDFまたは画像。注文ごとの品名・数量・納品予定日の表メールの添付
取引先の一覧送信者のアドレスとドメイン、商社名、商社の受注番号と自社の注文番号の対応の有無SharePoint のリスト
資材手配表現場、品名、規格、数量、注文番号、使用予定日、納品予定日、状態SharePoint のリスト
現場の一覧現場名、略称と旧称、監督、Teams のチャネルSharePoint のリスト

質を決めるのは、手配表の注文番号と、現場の一覧の略称です。 注文番号がそろっていれば、行の特定はほとんど機械的に終わります。略称の一覧が無いと、「〇〇2期」と「〇〇ビル新築工事(第2期)」が同じ現場だと分かりません。

取引先の一覧には、商社が自社の注文番号を書いてくるかどうかの列を持たせます。 書いてこない商社の連絡は、最初から品名と数量で当たりを付けることになり、取り違えが起きやすい相手として扱いを変えます(第7章の「人間の確認」)。

Step3

データの取得方法を決める

添付はトリガーで含めず、あとから取り出します。 コネクタの既知の問題には、添付付きのメールが同時に多く届くと、添付のダウンロード中に時間切れになることがあると書かれ、Include Attachments を「いいえ」にして Get Attachment (V2) で取る方法が示されています。添付の名前や種類などの情報は、この設定にかかわらず返ります。

取るものどのアクション何に使うか
本文と件名トリガーの出力連絡の種類と注文の特定
添付の中身Get Attachment (V2)納品予定表の読み取り
取引先の情報SharePoint の Get items(フィルター クエリでドメインを指定)送信者の照合
手配表の行SharePoint の Get items(フィルター クエリで注文番号を指定)書き換える行の特定
現場の監督とチャネルSharePoint の Get items(現場の一覧)遅れの投稿先

手配表は、注文番号で絞って1行だけ取ります。 Get items にはフィルター クエリ(OData)と取り出す件数の指定があり、指定しなければ全件を取りに行きます。 30現場分の手配表は数千行になるので、絞らずに取ると遅くなります。

Step4

AIへ渡す前に整形する

  1. 送信者の確認 … 送信者のドメインが取引先の一覧に無いメールは、読み取らずに確認待ちへ回します。営業の案内や請求書が混ざるのを入口で止めます
  2. 件名での振り分け … 件名に「請求」「見積」「ご案内(新商品)」を含むものは対象外として処理済みへ移します。迷うものは対象に残します
  3. 本文の整理 … 返信の引用部分(「-----Original Message-----」以下や「>」で始まる行)と署名を落とします。過去の連絡の日付を、今回の日付として読ませないためです
  4. 添付の選別 … PDFと画像だけを渡し、合計が25MB未満、50ページ未満であることを確かめます。超えるものは確認待ちへ回します
  5. パスワード付きPDFの確認 … 開けないものは確認待ちへ回し、商社に解除して送り直してもらいます
  6. 重複の検知 … 同じ送信者から同じ件名・同じ添付名のメールが24時間以内にあれば、二重の処理にしないよう印を付けます

3番目を省かないでください。 商社の返信は前回のやり取りを引用したまま来ることが多く、引用の中には前回の納品予定日が書かれています。 落とさずに渡すと、古い日付と新しい日付が1通に並びます。

Step5

AIに処理させる

させるのは、メールと添付から注文ごとの値を写し、連絡の種類を決められた選択肢から1つ選ぶことだけです。

取り出すもの書き方判断できないときの扱い
注文番号自社の注文番号として書かれた文字列をそのまま無ければ空。商社の受注番号は別の項目へ
商社の受注番号商社側の番号無ければ空
現場名書かれたとおり無ければ空。略称を直さない
品名・規格書かれたとおり規格が無ければ空
数量と単位数値と単位を分けて単位が無ければ空
納品予定日YYYY-MM-DD「来週中」「月末」は日付にせず原文を残す
連絡の種類確定/変更/遅れ/欠品/分納/取消/その他選べなければ「その他」
代わりの品の提案提案があれば品名と規格無ければ空

右端の列がこの構成の要です。 「来週中」を来週の金曜日に、「月末」を末日に置き換えると、手配表には確定した日付のように見える値が入ります。 使用予定日との比較もその日付で行われ、監督は確定していない日付で段取りを組みます。あいまいな日付は日付にせず、原文のまま確認待ちへ回します。

させないこと理由
使用予定日に間に合うかの判定日付の比較で決まる。手配表の側で行う
注文番号の推測品名が似た別の注文に当てはめると、別の現場の行が書き換わる
現場名の正式名への置き換え略称の対応は現場の一覧で行う
代わりの品を受けるかの判断設計・施主の承認が要ることがある。監督が決める
商社への返信納期の交渉は資材担当の仕事

2行目がいちばん起きやすい失敗です。 注文番号の無いメールを渡すと、本文の品名から「おそらくこの注文」と番号を埋めてきます。埋めた番号で行を引けてしまうと、ワークフローの側からは正しく引けたものと見分けがつきません。

Step6

指示内容を固定する

あなたは建設会社の資材課で、建材商社・メーカーから届いた
納品に関する連絡を読み、注文ごとの値を写す担当です。
メールの本文と添付の納品予定表だけを見て、書かれている値を写してください。

【写す項目(注文ごとに1件)】
- order_no ........ 当社の注文番号(例:PO-2026-01234)。書かれたとおりに写す
- supplier_ref .... 商社・メーカー側の受注番号
- site_name ....... 現場名。略称のまま写し、正式名に直さない
- item_name ....... 品名
- spec ............ 規格・品番・色・寸法
- quantity ........ 数値のみ
- unit ............ 枚、本、m、ケースなど
- delivery_date ... 納品予定日を YYYY-MM-DD で
- delivery_date_text ... 日付が「来週中」「月末」などのときは原文をここに
- notice_type ..... confirmed(確定)/changed(変更)/delayed(遅れ)/
                    out_of_stock(欠品)/partial(分納)/cancelled(取消)/other
- partial_rest .... 分納の残りの数量と、その納品予定日(書かれていれば)
- substitute ...... 代わりの品の提案があれば、その品名と規格
- evidence ........ この注文の値を写した元の文をそのまま

【厳守事項】
- 書かれていない値は空欄にしてください。推測で埋めないでください。
- order_no は、当社の注文番号として書かれているものだけを写してください。
  品名や数量から、どの注文かを推測して番号を埋めないでください。
- 「来週中」「月末」「〇日以降」などは delivery_date に日付を入れず、
  delivery_date_text に原文を写してください。曜日から日付を計算しないでください。
- 引用された過去のメールに書かれた日付は写さないでください。
- 1通に複数の注文があるときは、注文ごとに分けてください。
  同じ品名でも現場や注文番号が違えば別の件です。
- 遅れているか、間に合うかは判断しないでください。
  文面が丁寧であることを、遅れの根拠にしないでください。
- 納品に関する連絡ではないと判断した場合は、orders を空にして
  mail_type に種類(請求、見積、案内など)を書いてください。

回答に JSON マークダウンを含めないでください。

「文面が丁寧であることを、遅れの根拠にしない」を書いているのは、商社のメールが「ご迷惑をおかけします」から始まることが多いからです。 通常の納品日の確定でもこの書き出しを使う商社があり、何も言わなければ delayed を選びます。連絡の種類は、日付が前の連絡から動いたかどうかで決まるもので、言い回しでは決まりません。

最後の1行は、Microsoft の公式の FAQ にある対策です。 JSON の前後に説明やマークダウンの印が付くと形の検証に通らないことがあり、「回答に JSON マークダウンを含めないでください」を指示に足すことが示されています。 なお、プロンプトの入力に指示を含めることはセキュリティ上の理由で禁止されているため、指示はすべてプロンプトの本体に書き、メール本文は入力として渡すだけにします。

Step7

出力形式を固定する

プロンプトの出力を JSON にして、形をカスタムで固定します。 既定の「自動検出」はテストのたびに形が変わるため、例を書いて「カスタム」として保存します。 保存した形が、フローから呼ぶときにも使われます。

{
  "mail_type": "delivery_notice",
  "orders": [
    {
      "order_no": "PO-2026-01234",
      "supplier_ref": "",
      "site_name": "",
      "item_name": "",
      "spec": "",
      "quantity": 0,
      "unit": "",
      "delivery_date": "",
      "delivery_date_text": "",
      "notice_type": "confirmed | changed | delayed | out_of_stock | partial | cancelled | other",
      "partial_rest": [{ "quantity": 0, "delivery_date": "" }],
      "substitute": "",
      "evidence": ""
    }
  ]
}

orders は注文ごとの配列です。 フローの側では「それぞれに適用する」で1件ずつ回し、注文番号で手配表を引きます。キーの無い配列は JSON 出力でサポートされないとされているので、partial_rest も quantity と delivery_date のキーを持つ形にしています。

1つ目の理由は、ワークフローが規則で行き先を決められることです。

条件行き先
order_no で行が1つ引け、数量が手配表と同じ自動で書き換え
order_no が空、または引けない、または2行以上引ける確認待ち
delivery_date が空で delivery_date_text がある確認待ち(手配表は書き換えない)
notice_type が out_of_stock・partial・cancelled書き換えたうえで確認待ちにも載せる
新しい納品予定日 > 使用予定日 − 余裕日数遅れの印を付け、Teams へ投稿

2つ目は、evidence で確認が速くなることです。 確認待ちの一覧に、写した元の文が並びます。メールを開き直さずに、何を根拠にした値かを読めます。

3つ目は、分納を1行に押し込まずに済むことです。 partial_rest に残りの数量と日付が入り、手配表に足した「残りの数量の納品予定日」の列に書きます。第3章の(d)の「残りが消える」がここで止まります。

Step8

システムへ連携する

つなぎ先方式内容
共有メールボックスOffice 365 Outlook コネクタ着信の検知、添付の取り出し(Get Attachment (V2))、処理済みへの移動(Move email (V2))
AI Builder のプロンプト「プロンプトを実行する」アクション本文と添付から注文ごとの値を JSON で返す
資材手配表SharePoint コネクタ(Get items、Update item)注文番号で行を引き、納品予定日・数量・状態を書き換える
確認待ち・処理の記録SharePoint コネクタ(Create item)引けなかったもの、欠品・分納・取消、処理の結果を1行ずつ残す
現場のチャネルTeams コネクタ(Post message in a chat or channel)遅れの印が付いた資材を監督あてに投稿する

手配表で書き換えるのは、納品予定日・数量・状態と、足した3つの列だけです。 使用予定日、注文番号、現場は書き換えません。使用予定日は監督が決める日付で、資材の連絡で動かしてよいものではありません。

Teams への投稿は短くします。 投稿できるメッセージの大きさは約28KBが上限で、超えると「Request Entity too large」で失敗するとされています。現場・品名・数量・元の納品予定日・新しい納品予定日・使用予定日・商社名の7つだけを載せ、元のメールは確認待ちの一覧へのリンクで渡します。 プライベート チャネルへの投稿は現在サポートされていないとされているので、現場のチャネルは標準チャネルで作ります。

Step9

人が確認する

資材担当が見るのは、確認待ちの一覧だけです。 自動で書き換わったものは、1日の終わりに件数と現場を流し見ます。

  1. 引けなかったものを先に見る … order_no が空、または手配表に無いもの。evidence を読み、手配表で該当する行を探して、注文番号を手で入れてからフローに戻します
  2. あいまいな日付を確かめる … 「来週中」などは、商社に電話して日付を決めてもらいます。決まるまで手配表の納品予定日は前の値のままです
  3. 欠品と代わりの品 … 代わりの品の提案は、監督に判断を仰ぎます。受けるかどうかは監督が決め、資材担当が商社へ返事をします
  4. 分納と取消 … 残りの数量と日付が手配表に入ったかを確かめます。取消は再手配の要否を監督と決めます

注文番号を書いてこない商社の連絡は、行が引けても確認待ちに載せます。 取引先の一覧の「自社の注文番号を書いてくるか」の列で切り替えます。品名と数量で引いた行は、合っていそうに見えて違うことがあるからです。 商社に注文番号の記載をお願いし、書いてくるようになったら列を切り替えます。

現場監督は、Teams の投稿を見て対応を決めます。 待つのか、別の商社から取るのか、工程を入れ替えるのか。この判断はAIにもワークフローにもさせません。 決めた結果は、監督が手配表の備考の列に書きます。

Step10

例外に対処する

起きること対応
同時に多く届いてトリガーが取りこぼす毎朝7時の2本目のフローで、受信トレイに残ったメールを処理し直す
添付の取り出しで時間切れトリガーで添付を含めず、Get Attachment (V2) で取る。失敗したものは受信トレイに残す
添付が25MB以上・50ページ以上読み取らずに確認待ちへ。1か月分の表は商社に週ごとに分けてもらう
パスワード付きPDF確認待ちへ。商社に解除して送り直してもらう
プロンプトが100秒で終わらない時間切れとして確認待ちへ。添付をページで分けて再投入
JSON の形にならない1回だけやり直し、だめなら確認待ちへ
1通に複数の現場の注文orders を1件ずつ回す。1件でも引けなければ、そのメールは処理済みに移さない
同じ連絡が二度届く前処理の重複の印で、二度目は書き換えない
手配表の行が監督の手で直されている「最後に自動で書き換えた日時」より後に人が直していれば、自動では上書きせず確認待ちへ
Teams の投稿が失敗確認待ちの一覧に「通知できず」として載せ、資材担当が電話で伝える

上から2行目までは、メールの受け方の問題です。 どちらも「受信トレイに残っている=未処理」の決まりで拾えます。処理済みへ移すのは、すべての注文の書き換えと記録が終わったときだけにします。

下から2行目は、人の判断を上書きしないための規則です。 監督が商社と電話で話して納品日を直したあとに、古い連絡のメールが遅れて届くことがあります。人が後から直した行は、自動では書き換えません。

Step11

記録を残す

  • 元のメールの識別子と、受け取った日時・送信者
  • プロンプトに渡した本文(引用と署名を落とした後)と、返ってきた JSON の全文
  • 手配表のどの行の、どの列を、何から何へ書き換えたか
  • 確認待ちに回した理由と、資材担当がどう処理したか
  • Teams へ投稿した内容と、投稿の成否
  • 商社ごとの、注文番号の記載率と、確認待ちに回った割合

3つ目の「何から何へ」を残すのは、書き換えを戻せるようにするためです。 取り違えに気づいたとき、どの行をいつ書き換えたかが分からないと、手配表の正しい値をメールの山から探し直すことになります。

最後の行は、商社との話し合いの材料になります。 注文番号の記載率が低い商社には、記載をお願いします。記載率が上がるほど、確認待ちは減ります。 判定の精度を上げようとするより、こちらのほうが確実に効きます。

04実装レベルの3段階

最小構成:メールを手でAIの画面に貼り、注文ごとの表を作らせる / 1通ごとの読み取り
半自動化:上記+共有メールボックスを起点にフローで読み取り、手配表を書き換え、遅れを Teams に投稿する / 読み取り・書き換え・遅れの通知
本格構成:上記+発注の仕組みと手配表をつなぎ、商社の受注番号と注文番号の対応を自動で持ち、代わりの品の承認の流れまで回す / 発注から納品予定の管理まで

最小構成では件数がさばけません。 1通ずつ貼るので、600件には使えません。確かめるための段階です。 本記事の想定は半自動化です。 1件6分が2分になるのは、注文の特定と書き換えと見比べが自動になり、資材担当は確認待ちだけを見ればよくなるからです。 本格構成で発注の仕組みとつなぐと、商社の受注番号から注文番号を引けるようになり、確認待ちはさらに減ります。ただし発注の仕組みが会社ごとに違うため、ここは利用環境に応じた個別の実装が要ります。 段階を飛ばさないでください。 半自動化を1か月回すと、注文番号を書いてこない商社と、略称の一覧に足りない現場名が先に分かります。そこを直してから本格構成に進むほうが、取り違えが減ります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
600 件
1件あたり現在時間
6 分
1件あたり導入後時間
2 分
現在  600件 × 6分 ÷ 60 = 60 時間/月
導入後 600件 × 2分 ÷ 60 = 20 時間/月
月間削減時間
40h
削減率
67%
年間削減時間
480h
年間金額換算(時間単価3,500円)
168万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 同時に20〜40の現場を動かす建設会社・工務店で、建材商社やメーカーから納品予定・欠品・入荷遅れの連絡がメールで毎日届き、工務部の資材担当が1通ずつ読んで現場ごとの資材手配表に手で書き写している場合。手配表の更新が遅れ、遅れを現場監督が納品当日に知ることがある場合。Microsoft 365 を使い、資材の受付を共有メールボックスにまとめ、手配表を SharePoint のリストで持てる場合。
向いていない
  1. 取引する建材商社が数社で、連絡が月に数十通の場合。商社との受発注を共通の電子受発注の仕組みで行い、納期回答が画面で自動に反映される場合。手配表が現場ごとの別々のファイルで、注文番号の列を持たせられない場合。なお、遅れた資材の代わりの品を使うか、工程を組み替えるかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月届いた連絡メールから30通を選ぶ(注文番号の無いもの、分納、欠品、1通に複数の現場のものを必ず入れる)
  2. その30通を当時どう処理したか(どの行を書き換えたか)を手配表の履歴で確かめる
  3. Microsoft 365 Copilot のチャットか手元のAIサービスに、メール本文と添付を1通ずつ渡す
  4. 「このメールから、注文番号・現場名・品名・規格・数量・納品予定日・連絡の種類を注文ごとに表にしてください。注文番号が書かれていなければ空欄にしてください。『来週中』などの日付は日付に直さないでください」と指示する
  5. 出てきた表を、当時の書き換えと突き合わせる

30通は必ずやってください。 フローを組む前に、注文番号の無いメールで番号を埋めてこないかを確かめます。

出てきた内容判断
当時の書き換えと同じ値が出たフローの作成に進む
注文番号の無いメールで番号を埋めた指示の書き方で直る。直らなければ確認待ちに回す規則を厚くする
「来週中」を日付に直した指示に「曜日から計算しない」を足す
注文番号の無いメールが半分を超える先に商社へ記載をお願いする。 AIの問題ではない

最後の行が出ることは珍しくありません。 失敗ではなく、1件6分のうち探す時間が長かった理由が分かったということです。

08実装時につまずきやすいポイント

問題対策
注文番号の無いメールで番号を埋めてくる推測を禁じ、空欄なら確認待ちへ回す規則をフローに置く
丁寧な文面だけで「遅れ」になる連絡の種類は日付の動きで決まると指示し、遅れの判定はフローで日付を比べる
引用部分の古い日付を写す前処理で引用と署名を落とす
「来週中」が日付になって手配表に入る日付に直さず原文を残させ、手配表は書き換えない
同時に多く届いたときに取りこぼす毎朝の2本目のフローで受信トレイの残りを処理する
添付付きのメールで時間切れになるInclude Attachments を「いいえ」にし、Get Attachment (V2) で取る
1か月分の大きな表で行が抜ける大きな文書では表の行が不完全になりうる。商社に分けて送ってもらう
JSON の前後に余計な文字が付く「回答に JSON マークダウンを含めないでください」を指示に足す
自動検出の形が変わってフローが壊れる例を書いてカスタムで保存する
監督が直した納品日を古いメールで上書きする人が後から直した行は自動で書き換えない
Teams の投稿が長くて失敗する約28KBが上限。7項目だけにし、元のメールはリンクで渡す
現場のチャネルに投稿できないプライベート チャネルは未対応。標準チャネルで作る

上の2行が、この構成の失敗のほとんどです。 どちらも、AIに写す以上のことをさせたときに起きます。注文の特定と遅れの判定を手配表の側に置いてあるかどうかで、運用に乗るかが決まります。

下から3行目も早く効いてきます。 監督は電話で商社と話し、自分で手配表を直します。その後に届いた古い連絡で上書きすると、監督は自動の仕組みを信じなくなります。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 取引先の名称と担当者のメールアドレス、現場名と所在地、資材の品名・数量・納品予定日、ときに単価や施主の名前が書かれた添付です。

  1. 外部へ渡す範囲を、読み取りに必要なものに限る … プロンプトに渡すのは、引用と署名を落とした本文と納品予定表だけにします。手配表や取引先の一覧はプロンプトに渡さず、照合はフローの側で行います
  2. 処理される地域を確かめる … 日本ではプロンプトのモデルの多くが「GA(クロスジオ)」で、リージョン外でデータを処理する可能性があります。 施主の名前や現場の所在地が添付に入る場合は、Power Platform の管理者とモデルの選択を決めておきます
  3. 自動で書き換える範囲を狭く保つ … 使用予定日、注文番号、現場は書き換えません。発注や取消の手続きにはつなぎません。 取消の連絡が来ても、再手配は人が決めます
  4. 商社への返信を自動で送らない … 納期の交渉や代わりの品の返事は、資材担当が行います。取引条件に関わる返事を機械に任せない
  5. 代わりの品を受けるかは監督が決める … 仕様の変わる品は、設計者や施主の承認が要ることがあります。この構成は通知までで、承認の流れを省きません
  6. 共有メールボックスの権限を絞る … フローが使う接続のアカウントは、資材課の共有メールボックスと手配表のリストだけに権限を持たせます

誤りが起きた場合のリスクは、別の現場の行を書き換えることと、遅れを知らせ損ねることの2つです。 前者は注文番号の推測で起き、後者はあいまいな日付を日付に直すことと、取りこぼしで起きます。どちらも、推測を禁じる指示と、確認待ちに回す規則と、毎朝の突き合わせで守ります。

10まず何から始めるか

1週目:手配表と現場の一覧を整える

手配表の注文番号の列で、空いている行を埋めます。あわせて現場の一覧に、略称と旧称の列を足します。30現場すべてを一度に整える必要はありません。連絡の多い上位10現場から埋めます。

2週目:30通で試す

先月のメールから30通を選び、手元のAIサービスに貼って注文ごとの表を作らせます。注文番号の無いメールで番号を埋めていないか、「来週中」を日付に直していないかを最優先で見ます。

3週目:商社に注文番号の記載をお願いする

30通の結果から、注文番号を書いてこない商社を挙げ、連絡に自社の注文番号を書いてもらうよう依頼します。 取引先の一覧に、記載の有無の列を作ります。

4週目:フローを組む

共有メールボックスを起点に、プロンプトで読み取り、この時点では手配表を書き換えず、確認待ちの一覧に全件を書き出すだけにします。1週間、資材担当が一覧と自分の書き換えを見比べます。

2か月目: 注文番号で1行引けたものから自動の書き換えを始め、Teams への遅れの投稿を足します。毎朝の2本目のフローも動かします。3か月目以降: 確認待ちの割合を商社ごとに数え、1件6分が何分になったかを実測します。注文番号の記載率が上がり、確認待ちが2割を切った時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-12/最終更新:2026-10-13
確認した内容情報源確認日
「When a new email arrives in a shared mailbox (V2)」のトリガー、「Get Attachment (V2)」「Move email (V2)」のアクションがあること。多くのメールが同時に届くと、仕組み上の制約でまれにトリガーがメールを取りこぼすことがあること。添付付きのメールが同時に多く届くと時間切れになることがあり、Include Attachments を No にして Get Attachment (V2) で取る方法が示されていること。添付の名前などの情報は設定にかかわらず返ること。トリガーが受け取った日時で動き、フォルダを移しても日時が変わらないことMicrosoft Learn: Office 365 Outlook connector2026-10-12
フローの中で「プロンプトを実行する」アクションでプロンプトを使えること。Azure OpenAI サービスを活用した GPT モデルで動き、一部の地域に限定され、使用制限または容量帯域幅調整の対象になる場合があることMicrosoft Learn: Power Automate でプロンプトを使用する2026-10-12
画像またはドキュメントの入力が PNG・JPG・JPEG・PDF であること。合計25MB未満、50ページ未満、処理は最大100秒であること。大きな文書では特に表の行で不正確・不完全になりうること。入力に指示を含めることがセキュリティ上の理由で禁止されていること。モデルによって課金のレベルが異なることMicrosoft Learn: プロンプトに入力を追加する2026-10-12
プロンプトの出力を JSON にでき、自動検出とカスタムの形式があり、保存した形式がフローで使われること。「回答に JSON マークダウンを含めないでください」を加える対策。フィールドのキーの無い JSON 形式がサポートされないことMicrosoft Learn: JSON 出力2026-10-12
日本で GPT-4.1 mini などが「GA(クロスジオ)」とされ、クロスジオのモデルはリージョン外でデータを処理する可能性があることMicrosoft Learn: リージョンと更新プログラムによるモデルの可用性2026-10-12
SharePoint コネクタに Get items(OData のフィルター クエリ、取り出す件数の指定。既定は全件)、Update item、Create item のアクションがあることMicrosoft Learn: SharePoint connector2026-10-12
Post message in a chat or channel のアクションがあること。投稿するメッセージの上限が約28KBで、超えると「Request Entity too large」で失敗すること。プライベート チャネルへの投稿が現在サポートされていないことMicrosoft Learn: Microsoft Teams connector2026-10-12

遅れた資材への対応(代わりの品、工程の組み替え)は、現場監督と設計者・施主の取り決めに従ってください。 本記事は公式の説明で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1311)についてのご相談はこちらから。

AI活用について相談する
目次