市役所の各課から届く物品の購入依頼メールから、品名・数量・予算科目・納期を抜き出して購入台帳にそろえ、見積の要否と予算の残りを知らせる
市役所の各課から届く物品の購入依頼メールから、品名・数量・予算科目・納期などを抜き出して購入台帳に1行ずつそろえます。契約規則に照らした見積の要否と、その予算科目の残りを、依頼課と契約担当に知らせます。
- 生成AI
- Azure OpenAI Service/Claude
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- 医療/教育/自治体
- 対象部門
- 総務/購買
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 各課の担当者が、契約管財課の共有メールボックスへ購入依頼のメールを送る
- 契約管財課の担当が、メールと添付の依頼票を開いて読む
- 品名・規格・数量・予定金額・予算科目・納期・納品場所を、購入台帳に写す
- 予算科目や納期が書かれていなければ、依頼課へ聞き返しのメールを書く
- 財務会計システムの出力を開き、その課のその予算科目の残りを確かめる
- 予定金額と市の契約規則の金額の区分を照らして、見積の要否と見積を取る数を決める
- 依頼課に受付の連絡をし、業者へ見積の依頼を出す
- 人各課の担当者が、これまでどおり共有メールボックスへ購入依頼のメールを送る
- 自動メールの到着をきっかけにフローが動き、本文と添付の有無を取り出す
- 自動AIが品名・規格・数量・単価・予定金額・予算科目・納期・納品場所を抜き出し、書かれていない項目を示す
- 自動予算科目の一覧と照らして科目を確かめ、予算の残りの一覧から残額を引く
- 自動予定金額と、同じ課・同じ品目の今月の依頼の合計を、契約規則の金額の区分に当てはめる
- 自動購入台帳(SharePoint リスト)に「受付前」の1行を作る
- 自動受付の連絡か、書き漏れの聞き返しの文面を下書きし、契約担当の承認に回す
- 人契約担当が、抜き出した項目と見積の区分、文面を確かめ、直して承認する
- 自動承認された文面を共有メールボックスから依頼課へ送り、台帳を「受付済み」か「聞き返し中」にする
- 人契約担当が、見積の取り方と契約の方法を決め、業者への手配を始める
各工程の詳しい説明を読む
- 各課の担当者が、契約管財課の共有メールボックスへ購入依頼のメールを送る
- 契約管財課の担当が、メールと添付の依頼票を開いて読む
- 品名・規格・数量・予定金額・予算科目・納期・納品場所を、購入台帳に写す
- 予算科目や納期が書かれていなければ、依頼課へ聞き返しのメールを書く
- 財務会計システムの出力を開き、その課のその予算科目の残りを確かめる
- 予定金額と市の契約規則の金額の区分を照らして、見積の要否と見積を取る数を決める
- 依頼課に受付の連絡をし、業者へ見積の依頼を出す
(a)書き方がばらばらで、写すのに時間がかかる。 本文に書く課、依頼票を添付する課、URLだけの課が混ざり、同じ項目を探す場所が依頼ごとに違います。 3番目の転記がいちばん時間を取ります。
(b)書き漏れの聞き返しが多い。 予算科目が「消耗品」とだけ書かれ、どの節・細節か分からない依頼、納期が「なるべく早く」の依頼、納品場所が書かれていない出先機関の依頼が毎月あります。聞き返しのメールを書き、返事を待つあいだ、その依頼は台帳の上で止まります。
(c)見積の要否が担当によってぶれる。 予定金額が規則の区分の境目に近い依頼で、「単価×数量」で見るか「同じ時期の同じ品目の合計」で見るかが担当によって違います。同じ品目を同じ月に分けて依頼してくる課もあり、見落とすと区分を下回る形に分かれたまま手配されます。
(d)予算の残りの確認が後回しになる。 財務会計システムの出力を開いて探す手間があり、忙しい時期は見積の依頼を先に出してしまいます。後から予算が足りないと分かり、依頼課と業者の両方に連絡し直すことになります。
- 【人】 各課の担当者が、これまでどおり共有メールボックスへ購入依頼のメールを送る
- 【自動】 メールの到着をきっかけにフローが動き、本文と添付の有無を取り出す
- 【自動】 AIが品名・規格・数量・単価・予定金額・予算科目・納期・納品場所を抜き出し、書かれていない項目を示す
- 【自動】 予算科目の一覧と照らして科目を確かめ、予算の残りの一覧から残額を引く
- 【自動】 予定金額と、同じ課・同じ品目の今月の依頼の合計を、契約規則の金額の区分に当てはめる
- 【自動】 購入台帳(SharePoint リスト)に「受付前」の1行を作る
- 【自動】 受付の連絡か、書き漏れの聞き返しの文面を下書きし、契約担当の承認に回す
- 【人】 契約担当が、抜き出した項目と見積の区分、文面を確かめ、直して承認する
- 【自動】 承認された文面を共有メールボックスから依頼課へ送り、台帳を「受付済み」か「聞き返し中」にする
- 【人】 契約担当が、見積の取り方と契約の方法を決め、業者への手配を始める
8番目が、この設計の分かれ目です。 依頼課へ出す連絡は、すべて契約担当が確かめてから送ります。市の名前で出る連絡を、AIの抜き出しだけで送らないためです。そのかわり、担当は依頼を読み直すのではなく、抜き出した項目と原文の該当箇所を並べた画面で確かめます。
5番目で同じ課・同じ品目の合計を出すのは、第3章の(c)のためです。 分けて届いた依頼を、規則の区分に当てはめる前に足し合わせて示します。分割に当たるかどうかを決めるのは契約担当です。 構成は、気づける材料を出すところまでにします。
02今回想定するシステム構成
各課の担当者 ── 購入依頼のメール │ ▼【トリガー】When a new email arrives in a shared mailbox (V2) Power Automate(クラウドフロー) ├──▶ 本文・件名・送信者・添付の有無を取り出す ▼ AI Builder のプロンプト(Run a prompt、JSON 出力) │ 品名/規格/数量/単価/予定金額/予算科目/納期/納品場所 │ 書かれていない項目/原文の該当箇所 ▼ Power Automate ├──▶ 予算科目の一覧(SharePoint リスト)で科目を確かめる ├──▶ 予算の残りの一覧(SharePoint リスト)から残額を引く ├──▶ 購入台帳から同じ課・同じ品目の今月の依頼を合計する ├──▶ 契約規則の金額の区分(SharePoint リスト)に当てはめる ├──▶ 購入台帳に「受付前」の1行を作る ▼ AI Builder のプロンプト ── 受付の連絡/聞き返しの文面の下書き ▼ Start and wait for an approval of text ──▶【契約担当が直して承認】 ▼ Send an email from a shared mailbox (V2) ──▶ 依頼課へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Power Automate(クラウドフロー) | Make、n8n、Zapier |
| 生成AI | AI Builder のプロンプト(Run a prompt、JSON 出力) | Azure OpenAI(Microsoft Foundry)、Claude |
| 連携 | SharePoint リスト(購入台帳・予算科目の一覧・予算の残りの一覧・金額の区分) | Microsoft Lists |
| メール | Office 365 Outlook(契約管財課の共有メールボックス) | Exchange Online の別の受付用メールボックス |
入口は、Office 365 Outlook の When a new email arrives in a shared mailbox (V2) です。 公式の説明では、このトリガーは受信日時をもとに動き、設定したフォルダの中だけを見るとされています。また、ユーザーどうしで共有しているメールボックスでは、どちらかが相手のメールボックスへのフルアクセスを持っていないと動かないとされているので、Microsoft 365 の共有メールボックスとして作られているかを先に確かめます。
AIは、AI Builder のプロンプトを Run a prompt で呼びます。 2025年5月から「Create text with GPT using a prompt」の名前が Run a prompt に変わっています。出力には JSON を選べ、例を書き換えた Custom の形を保存すると、その形が実行時にも使われます。
人の確認は、Approvals の Start and wait for an approval of text で挟みます。 AI Builder の公式の手順で、プロンプトの出力のあとに置く人の確認として案内されているアクションで、承認する人が文面を直してから応答できます。
返信は Send an email from a shared mailbox (V2) で送ります。 このアクションは Microsoft 365 の共有メールボックスの機能でのみ動くとされ、個人のメールボックスから変換した共有メールボックスでは動かないとされています。
03どうやって実装するのか
処理の起点を決める
共有メールボックスへのメールの到着を起点にします。 対象は受信トレイではなく、仕分けのルールで「購入依頼」フォルダへ移したメールにします。件名に「【購入依頼】」を含むもの、または各課の担当者が依頼の様式から送ったものをルールで移します。トリガーは設定したフォルダの中だけを見るので、問い合わせや業者からの連絡を巻き込みません。
ここで注意が1つあります。 公式の説明では、フォルダへ移したメールについて、古いメールにも断続的にトリガーが動くことがあるとされています。トリガーが受信日時をもとに動き、移しても受信日時は変わらないためです。メッセージIDで台帳を引き、すでに行があれば止める処理を最初に置きます。
添付の依頼票は、本文と同じ扱いにはしません。 Word や Excel の依頼票の中身を読むには別の処理が要るので、この構成では本文に書かれた項目だけを抜き出し、添付があることを台帳に印として残します。 添付にしか書かれていない依頼は、第7章の例外処理で扱います。導入に合わせて、依頼はメール本文の様式で送るよう各課に案内します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 購入依頼のメール | 件名、本文、送信者、受信日時、添付の有無、メッセージID | 共有メールボックス |
| 課の一覧 | 送信者のアドレスと課の対応、出先機関の納品場所 | SharePoint リスト |
| 予算科目の一覧 | 款・項・目・節・細節のコードと名前、各課での呼び方 | SharePoint リスト |
| 予算の残りの一覧 | 課×予算科目ごとの予算額・執行済み額・残額と、出力した日 | 財務会計システムの週1回の出力を SharePoint リストへ |
| 金額の区分 | 市の契約規則で決めた、見積を何者から取るか・随意契約の上限などの区分 | SharePoint リスト |
| 今月の依頼 | 同じ課・同じ品目の今月の依頼の行 | 購入台帳 |
質を決めるのは、予算科目の一覧の「各課での呼び方」の列です。 各課は「消耗品費」「事務用品」「需用費で」とさまざまに書きます。呼び方の一覧が無いと、AIが科目を当て推量で決めます。 呼び方と正式な科目の対応を、財政課の担当と作ります。
予算の残りは、出力した日と一緒に持ちます。 週1回の出力なので、その後の執行は反映されていません。連絡の文面にも「〇月〇日時点」と必ず書きます。 残額を最新の数字として扱わないことが、第3章の(d)を防ぐうえで逆に大事です。
金額の区分は、市の契約規則の値を入れます。 地方自治法施行令は、予定価格が別表第五の額の範囲内で、地方公共団体の規則で定める額を超えないときに随意契約によることができるとしています。別表第五で財産の買入れの市町村の額は150万円です。市の規則の額はこの範囲内で市が決めるので、一覧には規則の値をそのまま入れます。 見積を何者から取るかの金額も、市の規則や要領の値を入れます。
データの取得方法を決める
| 取るもの | どこから | どうやって |
|---|---|---|
| メールの中身 | 共有メールボックス | トリガーの出力(件名・本文・送信者・メッセージID) |
| 課・予算科目・金額の区分 | SharePoint リスト | Get items |
| 予算の残り | SharePoint リスト | Get items の Filter Query で課と科目のコードを絞る |
| 今月の依頼 | 購入台帳 | Get items の Filter Query で課・品目・受付月を絞る |
Get items は Filter Query に OData の条件式を書けます。 課のコードと科目のコードで1行に絞ってから残額を読みます。台帳を全件読んでからフローの中で絞ると、年度の後半に遅くなります。
予算の残りの一覧は、財務会計システムから直接つなぎません。 財務会計システムは別の系統にあり、系統をまたぐデータの持ち出しは、市の情報セキュリティポリシーで決まった手順で行います。 週1回の出力を決まった担当が SharePoint のリストへ取り込む運用にし、この構成からは財務会計システムに触れません。
本文の暗号化に気をつけます。 公式の説明では、暗号化されたメールではトリガーの出力に本文が入らず、保護されている旨の注記になるとされています。暗号化して送られた依頼は、例外処理で人へ回します。
AIへ渡す前に整形する
- 重複の確認 … メッセージIDで購入台帳を引き、すでに行があれば止めます
- 依頼課の特定 … 送信者のアドレスを課の一覧と照らし、課のコードと既定の納品場所を決めます。一覧に無いアドレスは課を推測しません
- 本文の整形 … 署名、過去のやり取りの引用、定型の注意書きを落とします
- 添付だけの依頼の判定 … 本文が数行で、添付がある依頼は「添付のみ」の印を付けます
- 予算科目の呼び方の一覧を渡す … 予算科目の一覧の「各課での呼び方」をプロンプトに渡します
- 金額の区分は渡さない … 区分への当てはめはフローで行うので、AIには区分の値を見せません
6番目が、この構成の要です。 区分の境目の金額をAIに見せると、境目の近くの依頼で、予定金額を区分に合わせた数字に寄せることがあります。 AIには金額を写させるだけにし、区分はAIが見えないところで当てはめます。
AIに処理させる
させるのは、依頼の本文から決まった項目を写し出し、書かれていない項目と原文の該当箇所を示すことと、確認済みの項目から連絡の文面の下書きを作ることです。
| 項目 | させること | 判断できないときの扱い |
|---|---|---|
| 品名・規格 | 本文の記載を品目ごとに写す | 書かれていなければ not_stated |
| 数量・単位 | 数字と単位を写す | 「いくつか」「適量」は ambiguous |
| 単価・予定金額 | 書かれた金額を写す。税込か税抜かも写す | 「くらい」「前回と同じ」は ambiguous |
| 予算科目 | 呼び方の一覧から正式な科目を選ぶ | 一覧に無い書き方なら not_matched |
| 納期 | 日付として写す | 「なるべく早く」は ambiguous |
| 納品場所 | 書かれた場所を写す | 書かれていなければ not_stated |
| 原文の該当箇所 | 各項目の根拠の文を写す | 写せなければその項目を not_stated |
not_stated と ambiguous を分けるのは、聞き返しの文面が違うからです。 書かれていないなら「ご記入ください」、曖昧なら「〇〇とありますが、具体的な数量をお知らせください」と返します。依頼課にとって、何を直せばよいかが一目で分かる聞き返しになります。
| させないこと | 理由 |
|---|---|
| 金額を推し量ること | 見積の要否の根拠になる数字。書かれていなければ未記載 |
| 単価×数量の計算 | 計算はフローで行う。AIの計算を判断の材料にしない |
| 見積の要否・契約の方法を書くこと | 規則と契約担当が決める |
| 予算の残りを書くこと | リストの値をフローが文面に差し込む |
| 品目を似た品に置き換えること | 規格の違いが見積と納品の食い違いになる |
1行目と2行目が、この構成の中心です。 「前回と同じものを10箱」と書かれた依頼で、AIは前回の金額をそれらしく埋めがちです。埋まった数字が区分の境目の下にあれば、見積が要らない依頼として流れます。
指示内容を固定する
あなたは市役所の契約管財課で、各課からの物品の購入依頼を受け付ける立場です。
依頼メールの本文に書かれていることだけを使って、決まった項目を写してください。
推測で埋めないでください。
【写す項目】品目ごとに次を写してください。
- item_name:品名 - spec:規格・型番・色・サイズ
- quantity:数量 - unit:単位
- unit_price:単価 - amount:予定金額 - tax:税込/税抜/不明
- budget_item:予算科目(下の「予算科目の呼び方の一覧」から正式名を選ぶ)
- due_date:納期 - delivery_place:納品場所
【status の付け方】各項目に status を付けてください。
- ok ........... 値が書かれており、そのまま写せた
- not_stated ... 書かれていない
- ambiguous .... 書かれているが、値として確定できない
(「くらい」「前回と同じ」「なるべく早く」「適量」など)
- not_matched .. 予算科目の書き方が一覧のどれにも当たらない
【厳守事項】
- 金額が書かれていなければ not_stated です。過去の依頼や相場から
金額を埋めないでください。「前回と同じ」は ambiguous です。
- 単価×数量の計算をしないでください。amount は書かれていれば写し、
書かれていなければ not_stated にしてください。
- 品名や規格を、似た品や一般的な名前に置き換えないでください。
- 見積が要るか、どの契約方法になるかは書かないでください。
- 予算の残りについては何も書かないでください。
- 各項目の evidence に、根拠にした本文の文をそのまま写してください。
- 本文が「添付のとおり」などで、項目が本文に無い場合は
attachment_only を true にしてください。
- 購入依頼ではないメールなら、項目を写さず is_request を false に
してください。
- Don't include JSON markdown in your answer.
【予算科目の呼び方の一覧】{budget_aliases}
【依頼課】{dept_name}(既定の納品場所:{default_place})
【件名】{subject}
【本文】{body}
「前回と同じ」を名指しで ambiguous にしているのは、いちばん多い書き方だからです。 一般的な指示だけでは、文脈から前回を「推定」して埋めます。例に出した書き方は、そのとおりに扱われやすくなります。
最後の英文の1行は、公式の案内に合わせたものです。 JSON が作れないというエラーが出るとき、この一文を足すよう案内されています。
出力形式を固定する
次の形のJSONで受け取ります。 AI Builder のプロンプトの出力を JSON にし、例を書き換えて Custom の形に固定します。
{
"is_request": true,
"attachment_only": false,
"items": [
{
"item_name": { "value": "", "status": "ok | not_stated | ambiguous", "evidence": "" },
"spec": { "value": "", "status": "", "evidence": "" },
"quantity": { "value": "", "status": "", "evidence": "" },
"unit": { "value": "", "status": "", "evidence": "" },
"unit_price": { "value": "", "status": "", "evidence": "" },
"amount": { "value": "", "status": "", "evidence": "" },
"tax": "税込 | 税抜 | 不明"
}
],
"budget_item": { "value": "", "status": "ok | not_stated | not_matched", "evidence": "" },
"due_date": { "value": "", "status": "", "evidence": "" },
"delivery_place": { "value": "", "status": "", "evidence": "" }
}
1つ目の理由は、金額の区分への当てはめをフローに任せられることです。 amount が ok ならその値を、not_stated で単価と数量が ok ならフローで掛け算した値を使います。どちらも無ければ区分を当てはめず、「金額未記載」として聞き返しに回します。
| 状態 | フローの扱い |
|---|---|
| 予定金額と今月の同じ品目の合計が、見積の要らない区分に収まる | 受付の連絡の下書き。見積の区分を台帳に記録 |
| 見積が要る区分に入る | 受付の連絡に「見積を取ります」と書き、契約担当に見積の数を示す |
| 今月の合計を足すと区分が上がる | 「同じ品目の依頼が今月ほかにあります」と契約担当にだけ示す |
| 予算の残りが予定金額に足りない | 依頼課への文面に「〇月〇日時点の残額」を差し込み、契約担当に強調 |
not_stated・ambiguous・not_matched がある | 聞き返しの文面の下書き |
2つ目は、品目が複数ある依頼をそのまま台帳の複数行にできることです。 items は品目ごとの要素を並べた配列で、キーのある要素の配列なので、プロンプトの JSON の形として定義できます(キーの無い配列は定義できないとされています)。
3つ目は、evidence で確認が速くなることです。 契約担当は、承認の画面で項目と原文の該当箇所を並べて見られます。メールを開き直さずに確かめられます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有メールボックス | When a new email arrives in a shared mailbox (V2) | 依頼の受け取り |
| SharePoint リスト(課・予算科目・予算の残り・金額の区分) | Get items | 照合と残額の取得 |
| 購入台帳(SharePoint リスト) | Get items、Create item、Update item | 重複の確認、今月の合計、行の作成と状態の更新 |
| AI Builder のプロンプト | Run a prompt | 項目の抜き出しと、文面の下書き |
| Approvals | Start and wait for an approval of text | 契約担当による文面の確認と修正 |
| 共有メールボックス | Send an email from a shared mailbox (V2) | 承認された文面を依頼課へ送る |
文面の下書きは、2つ目のプロンプトで作ります。 渡すのは、契約担当が確かめる前の抜き出しの結果ではなく、フローが当てはめた区分と、リストから引いた残額と出力日です。数字はすべてフローが差し込んだものにし、AIには数字を作らせません。
財務会計システムと電子決裁には書き込みません。 予算の執行の手続きは、依頼課と契約管財課がこれまでどおり行います。この構成が出すのは、台帳の行と、依頼課への連絡までです。
人が確認する
依頼課へ出す連絡は、すべて契約担当が確かめてから送ります。 承認の画面で見るのは次の4つです。
- 品目・数量・金額が原文と合っているか …
evidenceと値を並べて見ます - 予算科目が合っているか … 呼び方の一覧で選ばれた科目が、依頼の用途と合うかを見ます
- 見積の区分と、今月の同じ品目の合計 … 区分の境目の近くの依頼と、合計で区分が上がる依頼を重点に見ます
- 文面 … 聞き返しの内容が依頼課に分かるか、残額の日付が入っているかを見て、直して承認します
3番目で分割に当たるかを決めるのは契約担当です。 同じ品目でも、別の事業の予算で別の時期に要る依頼は分割ではありません。構成は「ほかにもあります」と示すだけにし、判断の言葉を書きません。
目標は、360件をならして1件3分です。 項目がそろった依頼は承認の画面で1分ほどで済みますが、聞き返しと区分の境目の依頼は確かめることが多くなります。3分を大きく超える月は、呼び方の一覧が足りていないか、本文の様式が各課に浸透していません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 同じメールに二度トリガーが動く | メッセージIDで台帳を引き、行があれば止める |
| 送信者が課の一覧に無い | 課を推測せず、契約担当へ回す |
| 添付にしか項目が書かれていない | attachment_only。契約担当が添付を開き、台帳に手で入れる |
| 本文が暗号化されている | トリガーの出力に本文が入らない。契約担当へ回す |
| 購入依頼ではないメール | is_request が false。台帳に入れず、共有メールボックスに残す |
予算科目が not_matched | 聞き返しの対象。呼び方の一覧に足すかを財政課と決める |
| 予算の残りの一覧が古い | 出力日が7日より前なら、文面に残額を載せず「確認中」とする |
| 承認の応答が来ない | 翌朝の一覧に「承認待ち」として載せる |
| JSON が作れないエラー | 同じ入力で1回だけ再実行。続けて失敗すれば契約担当へ |
上の3行目がいちばん多い例外です。 導入の直後は、添付の依頼票で送ってくる課が残ります。件数を課ごとに数え、多い課から本文の様式を案内します。
記録を残す
- メッセージID、受信日時、送信者、件名、本文の原文
- AIが返したJSONの全文と、そのとき渡した呼び方の一覧の版
- 当てはめた金額の区分と、今月の同じ品目の合計の値
- そのとき使った予算の残りの一覧の出力日と残額
- 承認した人、承認した時刻、承認前の文面と送った文面の違い
- 契約担当が直した項目(品名・数量・金額・予算科目)
3つ目で今月の合計を残すのは、後から分割の扱いを問われたときのためです。 当時どの依頼が合算の対象として示されていたかが、台帳の行だけで説明できるようにします。
04実装レベルの3段階
半自動化で、1件10分が3分になり、この段階が本記事の想定です。 写すこと、探すこと、聞き返しの文面を書くことが自動になり、残るのは承認の画面での確認です。本格構成で減るのは、受付の後の見積依頼と集計の手間です。 段階を飛ばさないでください。 半自動化を1か月回すと、呼び方の一覧から漏れる書き方と、添付で送ってくる課が先に分かります。そこを直してから業者向けの文面を足すほうが、誤った品目で見積を依頼する事故を防げます。
05工数削減シミュレーション
導入後 360件 × 3分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 物品の購入を契約管財課などの1つの課でまとめて手配している市町村で、各課からの購入依頼がメールで月に数百件届き、担当が本文と添付の依頼票を読んで購入台帳に写している場合。依頼に予算科目や納期の書き漏れが多く、聞き返しのメールに時間を取られている場合。Microsoft 365 を使っていて、購入台帳と予算の残りの一覧を SharePoint のリストに置ける場合。
- 財務会計システムや電子決裁に物品の購入依頼の入力画面があり、各課がそこへ項目をそろえて入力する運用が定着している場合。購入依頼が月に数十件で、担当が全件を自分で読んで手配できている場合。なお、契約の方法(随意契約か入札か)、見積を何者から取るか、予算を執行してよいかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の購入依頼のメールから40件を選ぶ(うち数件は、書き漏れがあったものと、金額が曖昧だったものを入れる)
- 予算科目の呼び方の一覧を、財政課の担当と作る
- 呼び方の一覧と40件の本文を、Microsoft Copilot などの手元のAIサービスに貼り付ける
- 「品名・規格・数量・単価・予定金額・予算科目・納期・納品場所を写してください。書かれていなければ『記載なし』、曖昧なら『曖昧』としてください。金額を推測しないでください」と指示する
- 出てきた結果を、当時の購入台帳の行と突き合わせる
40件は必ずやってください。 フローを組む前に、「本文だけで項目がそろうのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の台帳とおおむね同じ項目になった | フローの組み立てに進む |
| 予算科目の取り違えが多い | 呼び方の一覧を足す。構成は有効 |
| 添付にしか書かれていない依頼が多い | 本文の様式の案内が先。 AIの問題ではない |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| フォルダへ移した古いメールでトリガーが動く | メッセージIDで台帳を引き、重複を止める |
| 共有メールボックスでトリガーが動かない | Microsoft 365 の共有メールボックスか、フルアクセスがあるかを確かめる |
| 変換した共有メールボックスから送れない | 送信のアクションは変換したものでは動かない。最初から共有として作る |
| 「前回と同じ」から金額が埋まる | 名指しで ambiguous にし、推測を禁じる |
| 区分の境目に金額が寄る | 区分の値をAIに見せない |
| 予算科目の取り違え | 呼び方の一覧を財政課と育てる |
| 残額を最新として連絡してしまう | 出力日を必ず文面に入れ、古ければ載せない |
| 添付の依頼票が読めない | 本文の様式を案内し、添付のみは人が入れる |
| 暗号化メールの本文が取れない | トリガーの出力に本文が入らない。人へ回す |
| 分割の判断まで自動にしたくなる | 合計を示すまでにし、判断は契約担当 |
上から4行目と5行目が、この構成の失敗のほとんどです。 どちらも、見積の要否の根拠になる金額を、AIが作ってしまうことから起きます。金額は書かれたものだけを写し、区分の当てはめはAIの見えないところで行うという線を守れば、運用に乗ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 各課の購入予定の品目と金額、予算科目と残額、職員の氏名とメールアドレス、出先機関の所在地です。個人の住民の情報は扱わない前提です。
- 住民の情報を依頼に書かせない … 生活保護や福祉の課が、支援の対象者に関わる物品を依頼することがあります。依頼の本文に住民の氏名や事情を書かないよう、様式の注意書きで案内します
- cross-geo の扱いを確かめる … 日本の地域では既定のモデルが GA (cross-geo) と表示され、地域の外でデータを処理する場合があるとされています。市の情報セキュリティポリシーで、この情報をその形で処理してよいかを先に確かめます
- 系統をまたぐデータの持ち出しを手順どおりに行う … 予算の残りは財務会計システムからの出力です。取り込む担当と手順を決め、自動でつながないようにします
- 市の名前で出る連絡を自動で送らない … すべて契約担当の承認を経て送ります
- 契約の方法をこの構成に持たせない … 出すのは規則への当てはめの材料と、合計の値までです。随意契約によるか、見積を何者から取るかは、規則に基づいて契約担当が決めます
誤りが起きた場合のリスクは、金額を誤って写して見積の要らない区分に入れることと、古い残額で予算が足りると伝えることの2つです。 前者はAIに金額を推し量らせると起き、後者は残額の日付を落とすと起きます。どちらも設計で守ります。
10まず何から始めるか
1週目:2つの一覧を作る
財政課の担当と、予算科目の「各課での呼び方」の一覧を作ります。あわせて、市の契約規則と要領から、見積を何者から取るか、随意契約によることができる上限などの金額の区分を一覧にします。
2週目:40件で試す
先月の依頼から40件を選び、手元のAIサービスで項目を写させます。当時の台帳と突き合わせ、金額を推測で埋めていないかを最優先で見ます。
3週目:本文の様式を各課に案内する
依頼をメール本文の様式で送るよう、件名の決まりと一緒に各課へ案内します。添付で送ってくる課の数が、この時点の効果の上限を決めます。
4週目:メールから台帳までをつなぐ
Power Automate で、共有メールボックスのトリガーから AI Builder のプロンプト、台帳への記録までを作ります。最初の2週間は承認と返信をつながず、台帳の行と担当の手作業を見比べます。
2か月目: 区分の当てはめ、残額の取得、文面の下書きと承認、返信を足します。聞き返しの件数と、担当が直した項目を毎週数えます。3か月目以降: 1件10分が何分になったかを実測し、呼び方の一覧の手入れが月1回で済むようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| When a new email arrives in a shared mailbox (V2) が受信日時をもとに動き、設定したフォルダだけを見ること。フォルダへ移したメールで古いメールにも断続的に動くことがあること。ユーザー間の共有メールボックスではフルアクセスが要ること。暗号化メールではトリガーの出力に本文が入らないこと。Send an email from a shared mailbox (V2) が Microsoft 365 の共有メールボックスでのみ動き、変換したものでは動かないこと | Microsoft Learn: Office 365 Outlook connector | 2026-10-13 |
| 2025年5月から Create text with GPT using a prompt の名前が Run a prompt になったこと。プロンプトの入力に前の手順の内容を入れられること。Start and wait for an approval of text で人の確認を挟み、文面を直して応答できること | Microsoft Learn: Use your prompt in Power Automate | 2026-10-13 |
| 出力に JSON を選べ、形が Auto detected か Custom で決まり、保存時の形が実行時に使われること。キーの無い配列は定義できないこと。JSON が作れないときに「Don't include JSON markdown in your answer」を足すよう案内されていること | Microsoft Learn: JSON output | 2026-10-13 |
| 日本で GPT-4.1 mini が GA (cross-geo) であり、cross-geo のモデルは地域外でデータを処理する場合があること | Microsoft Learn: Prompt model availability by region | 2026-10-13 |
| Create item、Get items、Update item があり、Get items に Filter Query(OData の条件式)と Top Count があること | Microsoft Learn: SharePoint connector | 2026-10-13 |
| 地方自治法施行令第167条の2第1項第1号で、予定価格が別表第五の額の範囲内で地方公共団体の規則で定める額を超えないときに随意契約によることができること。別表第五で財産の買入れの市町村の額が150万円であること | e-Gov 法令API: 地方自治法施行令 | 2026-10-13 |
随意契約によるか、見積を何者から取るかは、市の契約規則に基づいて契約担当が決めてください。 本記事は上記の公式ページと法令で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1411)についてのご相談はこちらから。
