豆腐の製造所が飲食店・スーパーからメールで届く注文を n8n で受け、品目・数・納品日を抜き出して翌日の製造の指示にまとめる
飲食店とスーパーからメールで届く豆腐の注文を n8n で受け、品目・数・単位・納品日・取り消しをAIが書かれたとおりに抜き出します。丁数への換算と品目ごとの集計は表の規則で行い、締めの時刻に翌日の製造の指示の案にまとめます。
- 生成AI
- ChatGPT/Claude
- 連携・自動化
- Make/n8n/Zapier
- 対象業界
- 小売/製造/飲食
- 対象部門
- 生産
- 対象業務
- データ入力・転記/集計・分析
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 事務の担当が受付のアドレスに届いたメールを開く
- 送り主から得意先を特定する。個人のアドレスから店主が送ってくることもある
- 品目の通称を正式な品目に直し、ケースや枚を丁数に直して、注文の表に書き写す
- 取り消しや増減の連絡なら、前の注文の行を探して直す
- 14時の締めに、注文の表を品目ごとに足し上げる
- 品目ごとの製造数から、配合の表で大豆の使用量を出し、製造の指示の表に書く
- 製造の責任者が指示の表を見て、予備の数を足して確定する
- 得意先に受け付けた旨を返す(返さないことも多い)
- 自動受付のアドレスに届いたメールを n8n の Gmail Trigger が拾う
- 自動送り主のアドレスで得意先の一覧を引く。見つからなければ担当に回す
- 自動Claude がメールの本文から品目・数・単位・納品日・取り消しや増減を書かれたとおりに抜き出す
- 自動品目の通称の表と得意先ごとの入数の表で、品番と丁数に直して注文の表に足す。取り消し・増減は前の行に差し引きで当てる
- 自動受付の返事の下書きを、届いたメールのスレッドに作る
- 人担当が注文の表で `needs_check` の行だけを確かめ、下書きを見て送る
- 自動14時に締め、翌日の納品分を品目ごとに足し上げ、配合の表で大豆の使用量の案を出す
- 人製造の責任者が製造の指示の案を見て、予備の数を決めて確定する
各工程の詳しい説明を読む
- 事務の担当が受付のアドレスに届いたメールを開く
- 送り主から得意先を特定する。個人のアドレスから店主が送ってくることもある
- 品目の通称を正式な品目に直し、ケースや枚を丁数に直して、注文の表に書き写す
- 取り消しや増減の連絡なら、前の注文の行を探して直す
- 14時の締めに、注文の表を品目ごとに足し上げる
- 品目ごとの製造数から、配合の表で大豆の使用量を出し、製造の指示の表に書く
- 製造の責任者が指示の表を見て、予備の数を足して確定する
- 得意先に受け付けた旨を返す(返さないことも多い)
(a)14時の前に書き写しが詰まる。 注文の多くが昼の営業の前後に届き、13時台に数十通が重なります。 締めに間に合わせようと急ぐほど、書き写しの漏れが増えます。
(b)取り消しを見落とす。 「昨日の分、減らして」は短いメールで届き、新しい注文の山に埋もれます。見落とすと、減らしたはずの数をそのまま作ります。
(c)単位の取り違え。 スーパーの「2ケース」を2丁と書き写すと、翌朝、店に届く数が1ケース分足りません。 得意先ごとの入数は担当の頭の中にあります。
(d)作りすぎと足りないが、翌朝まで分からない。 豆腐は日持ちがしないので、作りすぎた分は売り先がありません。足りない分は、その日のうちに作り足せません。
- 【自動】 受付のアドレスに届いたメールを n8n の Gmail Trigger が拾う
- 【自動】 送り主のアドレスで得意先の一覧を引く。見つからなければ担当に回す
- 【自動】 Claude がメールの本文から品目・数・単位・納品日・取り消しや増減を書かれたとおりに抜き出す
- 【自動】 品目の通称の表と得意先ごとの入数の表で、品番と丁数に直して注文の表に足す。取り消し・増減は前の行に差し引きで当てる
- 【自動】 受付の返事の下書きを、届いたメールのスレッドに作る
- 【人】 担当が注文の表で
needs_checkの行だけを確かめ、下書きを見て送る - 【自動】 14時に締め、翌日の納品分を品目ごとに足し上げ、配合の表で大豆の使用量の案を出す
- 【人】 製造の責任者が製造の指示の案を見て、予備の数を決めて確定する
6番目が、この設計の分かれ目です。 担当が開くのは通称が当たらなかった行、単位が換算できなかった行、取り消しの当て先が見つからなかった行だけです。当たった行は、抜き出しの元の文と換算後の丁数が並んでいるので、流し見で済みます。
8番目の予備の数を人に残しているのも、意図してのことです。 天気や行事で追加の注文が来そうな日は、責任者が経験で予備を足しています。この判断は記録から機械的には出せないので、指示の案には入れません。
5番目の下書きを自動で作るのは、受付の返事が抜けていたからです。 返事が無いと、得意先は届いたかを電話で確かめてきます。返事に丁数を書いておけば、入数の取り違えを得意先の側でも見つけられます。
02今回想定するシステム構成
得意先のメール(飲食店・スーパー・給食の業者) │ ▼【トリガー】Gmail Trigger(受付のラベル・未読) n8n ├──▶ 送り主のアドレスで得意先を引く ▼ Claude(Information Extractor ノード) │ 品目・数・単位・納品日・取り消しや増減を書かれたとおりに抜き出す ▼ n8n ── 通称の表で品番、入数の表で丁数に直す/取り消しを前の行に当てる ├──▶ 注文の表へ追記(Google Sheets) ├──▶ 受付の返事の下書き(Gmail のスレッド) ▼【トリガー】Schedule Trigger(毎日14時) Summarize ノード ── 翌日の納品分を品目ごとに足し上げる ▼ 製造の指示の表(品目ごとの製造数と大豆の使用量の案) ▼ 【人】製造の責任者が予備を足して確定
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Zapier |
| 生成AI | Claude(n8n の Anthropic Chat Model ノード) | OpenAI API |
| 集計 | n8n の Summarize ノード | スプレッドシートの関数 |
| 台帳 | Google スプレッドシート(得意先の一覧、通称の表、入数の表、注文の表、配合の表、製造の指示の表) | 既存の販売管理の台帳 |
| メール | Gmail(n8n の Gmail Trigger と Gmail ノード) | Microsoft Outlook |
新しく足すのは n8n だけです。 メールの受付のアドレスとスプレッドシートはいまのまま使い、表を3つ(通称の表、入数の表、配合の表)足すのが準備作業です。
n8n を選ぶのは、受付から締めの集計までを1つの仕組みで持てるからです。 メールの受信をきっかけにする流れと、14時に動く流れを同じ n8n の中に置き、同じ注文の表を読み書きします。 Information Extractor ノードは、抜き出す項目をスキーマで定義でき、出力の形式の指示はノードが自動で足します。
集計をAIにさせないのも、この構成の決まりです。 品目ごとの足し上げは Summarize ノードの Sum で行い、大豆の使用量は配合の表から計算します。数を扱う部分はすべて表と計算で、AIが触れるのは文を読むところだけです。
03どうやって実装するのか
処理の起点を決める
受け付けの流れは Gmail Trigger の Message Received で動かします。 Gmail Trigger は決まった間隔でメールを見にいく方式で、間隔は Poll Times の Mode で決めます。13時台の集中を考えて、間隔は数分ごとにします。 1回で拾うメールの数は Max Emails per Poll(既定10、最大50)で決まり、超えた分は次の回に回ります。 13時台に数十通が重なる日は、50にしておきます。
絞り込みは Filters で行います。 受付のアドレスに届くメールに Gmail の側で「注文」のラベルを付け、Label Names or IDs でそのラベルだけを拾います。Read Status の既定は「未読だけ」なので、担当が先にメールを開くと拾われません。 このため Read Status は既読も含めるにし、Search に -label:処理済み のような Gmail の検索の書き方を入れて、処理したものを除きます。 処理が終わったメールには、n8n の側で「処理済み」のラベルを付けます。ラベルを付けるのは注文の表に書けたときだけにし、途中で止まったメールは次の回にもう一度拾われるようにします。
締めの流れは Schedule Trigger で毎日14時に動かします。 ここでいちばん気をつけるのはタイムゾーンです。ワークフローにタイムゾーンを設定していないと n8n のインスタンスのタイムゾーンが使われ、自分で立てた n8n の既定は America/New York です。 そのままだと14時が日本の午前3時か4時になります。ワークフローの設定で Asia/Tokyo にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 注文のメール | 送り主、件名、本文、受信の日時、スレッドの ID | Gmail Trigger |
| 得意先の一覧 | 得意先コード、名前、送り主のアドレス(複数)、納品の曜日、締めの例外(給食の業者は前々日など) | スプレッドシート |
| 通称の表 | 得意先ごとの通称(「揚げ」「もめん」「絹ごし」など)と品番 | スプレッドシート |
| 入数の表 | 得意先と品目ごとの「1ケース」「1箱」の丁数・枚数 | スプレッドシート |
| 注文の表 | 得意先、納品日、品番、丁数、元の文、種類(新規・増減・取り消し)、状態 | スプレッドシート |
| 配合の表 | 品目ごとの1仕込みの大豆の量と、できる丁数 | スプレッドシート |
質を決めるのは、通称の表と入数の表です。 「揚げ」をその得意先がどちらの意味で使うかは、得意先ごとに表に書いておくしかありません。 同じく「1ケース」の丁数は、スーパーと給食の業者で違います。
通称の表を得意先ごとに持つのが、この構成の工夫です。 全得意先で共通の表にすると、ある店の「揚げ」を直したときに、別の店の「揚げ」まで変わります。
データの取得方法を決める
| 取るもの | どこから | どの順で |
|---|---|---|
| 得意先 | Google Sheets ノードの Get Row(s)(送り主のアドレスで引く) | 抜き出しの前 |
| 通称・入数 | Get Row(s)(得意先コードで引き、Return All Matches にする) | 抜き出しの後 |
| 前の注文(取り消し・増減のとき) | Get Row(s)(得意先コードと納品日で引き、Return All Matches) | 抜き出しの後 |
| 翌日の納品分(締め) | Get Row(s)(納品日と状態で引く) | 14時 |
| 配合の表 | Get Row(s) | 集計の後 |
Get Row(s) で絞り込んだときの既定は、最初に一致した1行だけです。 通称・入数・前の注文はどれも複数行あるので、When Filter Has Multiple Matches を Return All Matches にします。 これを忘れると、得意先の最初の通称しか引けず、2品目以降がすべて「当たらない」になります。
Gmail Trigger の Simplify は既定でオンです。 オンのときに返るのは ID・ラベル・ヘッダー(From・To・Subject など)が中心です。本文を Information Extractor に渡すので、Simplify をオフにして生のデータを受け、本文の部分を取り出します。 署名と引用された過去のやり取りは、前処理で落とします。
AIへ渡す前に整形する
- 得意先を引く … 送り主のアドレスで得意先を探します。見つからなければ抜き出しをせず、担当へ回します
- 引用を落とす … 返信で届いたメールは、「>」で始まる行や「〜wrote:」以降の過去のやり取りを落とします。落とさないと、前の注文の数をもう一度抜き出します
- 署名を落とす … 店の住所・電話番号の行を落とします
- 数字をそろえる … 全角と半角をそろえます。漢数字は残します
- 受信の日時を付ける … 「明日」「今日の分」を解くために、日本時間の受信の日時を本文の前に付けます
- 締めの後かを印す … 14時を過ぎて届いた翌日分の注文には
after_cutoffの印を付けます - スーパーの店舗の行を分ける … 本文に店舗ごとの数が表のように並ぶメールは、店舗の名前が並ぶ行で区切り、店舗ごとに1件として抜き出しに回します。 1通のまま渡すと、店舗と数の組み合わせがずれることがあります
2番目を省かないでください。 得意先が前のメールに返信して「追加で絹3」と書くと、引用の中の「木綿10 絹5」まで今回の注文として抜き出されます。
AIに処理させる
させるのは、メールの本文から注文の行を書かれたとおりに抜き出し、行の種類を分けることだけです。 n8n の Information Extractor ノードに Anthropic Chat Model をつなぎ、スキーマを JSON Schema で定義します。
| 抜き出すもの | 抜き出し方 | 書かれていないときの扱い |
|---|---|---|
| 品目 | 書かれた語のまま(「揚げ」「もめん」) | 空。missing に入れる |
| 数 | 書かれた数字のまま | 空 |
| 単位 | 丁・ケース・枚・個・箱など、書かれた語 | 空。補わない |
| 納品日 | 書かれた言い方のまま(「明日」「金曜分」「11/2」) | 空 |
| 店舗 | スーパーの店舗名、書かれていれば | 空 |
| 行の種類 | new(新規)/change(増減)/cancel(取り消し)/same_as_usual(いつも通り) | unclear |
| 増減の向き | change のとき、増やすか減らすか | 空 |
右から2列目の「書かれたとおり」が、この構成でいちばん大事な決まりです。 「明日」を日付に直すのも、「2ケース」を丁数に直すのも、AIではなく n8n のコードノードがやります。 AIが直した値は、どこまでが書かれていたことかが見分けられなくなります。
行の種類を分けさせるのは、取り消しの見落としを止めるためです。 cancel と change の行は、注文の表に新しい行として足さず、同じ得意先・同じ納品日の前の行を探して差し引きます。
| させないこと | 理由 |
|---|---|
| 丁数への換算 | 入数の表で掛け算する。入数は得意先ごとに違う |
| 品番を選ぶこと | 通称の表で引く。「揚げ」の意味は得意先ごとに違う |
| 「いつも通り」の中身を決めること | 得意先の定番の数を表で引く |
| 納品日を暦の日付に直すこと | 受信の日時からコードで解く |
| 前の注文との差し引き | 注文の表で n8n が行う |
| 追加を受けられるかの返事 | 製造の責任者が決める |
1行目がいちばん起きやすい失敗です。 入数の表を渡して換算させると、表に無い組み合わせでも、それらしい入数を当てはめて丁数を出します。
指示内容を固定する
Information Extractor ノードの System Prompt Template に次の文を入れます。出力の形式の指示はノードが自動で足すので、ここには書きません。
あなたは豆腐の製造所の受付で、得意先から届いた注文のメールを読む立場です。
本文に書かれていることだけを、決まった項目に書き出してください。
【書き出すもの】
- lines:注文の行ごとに、品目・数・単位・納品日・店舗・行の種類
- missing:注文を受けるのに足りない情報
- questions_for_staff:担当が得意先に確かめるべきこと
【行の種類】
- new ........... 新しい注文
- change ........ 前に送った注文の数を増やす・減らす(direction に up か down)
- cancel ........ 前に送った注文を取り消す
- same_as_usual . 「いつも通り」「いつもの」とだけ書かれている
- unclear ....... どれか決められない
【厳守事項】
- 品目は書かれた語のまま書いてください。「揚げ」を厚揚げか油揚げかに決めないでください。
- 数と単位は書かれたとおりに書いてください。ケースや箱を丁数に直さないでください。
計算をしないでください。漢数字は漢数字のまま書いてください。
- 単位が書かれていなければ空にしてください。「丁」を補わないでください。
- 納品日は書かれた言い方のまま書いてください。暦の日付に直さないでください。
- 「減らして」「やめて」「キャンセル」は new にしないでください。
減らす数が書かれていれば change、全部やめるなら cancel にしてください。
- 「いつも通り」の中身を推測しないでください。same_as_usual にして、数は空にしてください。
- 引用された過去のメールの内容は書き出さないでください。
- 注文でない文(お礼、請求の問い合わせなど)なら lines を空にし、
questions_for_staff に文の種類を書いてください。
【得意先】{customer_name}
【受信の日時(日本時間)】{received_at}
【本文】
{body}
「減らして」を new にしないことを、例を挙げて書いています。 何も言わなければ、「厚揚げ 5枚 減らして」の中の「厚揚げ」「5」「枚」を新しい注文として書き出すことがあります。取り消しの見落としは、作りすぎに直結します。
出力形式を固定する
次の形の JSON で受け取ります。 スキーマはノードの「Define using JSON Schema」で定義します。
{
"message_type": "order | change | cancel | other",
"lines": [
{ "item_text": "揚げ", "qty_text": "20", "unit_text": "枚",
"delivery_text": "明日", "store_text": "", "line_type": "new",
"direction": "" }
],
"missing": [],
"questions_for_staff": []
}
AIが埋めるのはここまでです。 この後ろに、n8n のコードノードが規則で次の項目を足します。
| 足す項目 | 決め方 |
|---|---|
sku | 得意先ごとの通称の表で引いた品番。当たらなければ空 |
pieces | qty_text を数字にし、入数の表で丁数・枚数に直した値 |
delivery_date | 受信の日時と delivery_text から解いた日付 |
target_row | change/cancel のとき、差し引く前の注文の行 |
status | すべて当たれば ok、どれかが空なら needs_check、締めの後なら after_cutoff |
1つ目の理由は、AIの書き出しと換算を別の層に置けることです。 入数が変わったら、入数の表を直すだけで、同じ書き出しから正しい丁数が出ます。
2つ目は、status で担当が見る行を絞れることです。 ok の行は締めの集計にそのまま入り、needs_check と after_cutoff の行は担当が確かめるまで集計に入れません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Gmail(受信) | Gmail Trigger(ラベルと未読で絞る) | 注文のメールを拾う |
| Claude | Information Extractor + Anthropic Chat Model | 本文から注文の行を抜き出す |
| 得意先・通称・入数・注文・配合・製造の指示 | Google Sheets ノード | 読み取りと、注文の表への追記・更新 |
| Gmail(返事) | Gmail ノードの Create a draft(Thread ID を指定) | 受付の返事の下書き |
| 締めの集計 | Schedule Trigger + Summarize ノード | 品目ごとの丁数の合計 |
注文の表への書き込みは、新規は Append Row、増減と取り消しは Update Row で行います。 Update Row は既存の行だけを更新し、新しい行は足しません。取り消しは行を消さず、状態を「取り消し」にして元の文を残します。
締めの集計は Summarize ノードで行います。 Fields to Split By に品番を入れ、丁数を Sum で足し上げます。SQL の GROUP BY と同じ働きです。集計の結果に配合の表を当てて、仕込みの回数と大豆の使用量を出すのはコードノードです。 1仕込みの単位で切り上げるので、端数の扱いを責任者と決めておきます。
返事は下書きまでにします。 Create a draft の Thread ID に届いたメールのスレッドを入れると、得意先とのやり取りの流れの中に下書きができます。
人が確認する
担当が開くのは needs_check と after_cutoff の行だけです。 ok の行は、元の文と丁数が並んだ注文の表で流し見ます。
needs_checkを先に見る … 通称が当たらない、入数が無い、取り消しの当て先が無いもの。直したら通称の表か入数の表に足しますsame_as_usualを見る … 得意先の定番の数が出ているので、曜日の違いが無いかを見ますafter_cutoffは責任者に回す … 受けるかどうかは製造の責任者が決めます- 下書きを見て送る … 受け付けた品目と丁数が書かれているので、得意先が数の違いに気づけます
- 14時の指示の案を責任者が確定する … 予備の数を足し、仕込みの回数を決めます
4番目の返事に丁数を書くのは、得意先に確かめてもらうためです。 「絹 2ケース(24丁)で承りました」と返せば、入数の取り違えがあれば得意先の側で気づきます。
直した組を表に足すことを続けるのが、精度を上げる方法です。 通称の表に足した組は、次の注文から ok で出ます。
目標は、900件をならして1件1分です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 送り主が得意先の一覧に無い | 抜き出しをせず担当へ。新しいアドレスなら一覧に足す |
| 通称が表に無い | needs_check。担当が品番を当て、通称の表に足す |
| 単位が書かれていない | needs_check。得意先の過去の注文の単位を候補として出す |
| 取り消しの当て先が無い | needs_check。すでに締めた分なら責任者へ |
| 締めの後に届いた | after_cutoff。翌日分に入れるかは責任者が決める |
| 13時台に50通を超える | 次の回に回る。締めの直前は手で受信箱も見る |
| Claude が応答しない | 本文のまま needs_check で注文の表に入れる |
| 添付のファイルだけで本文が無い | 担当へ回す。添付はAIに読ませない |
| 同じ注文が2通届く(送り直し) | 同じ得意先・納品日・品目・丁数の new が30分以内に続けば needs_check で止める |
6行目は、締めの直前に起きると取りこぼしになります。 13時50分の時点で、受付のラベルの未読が0になっているかを担当が確かめる手順を入れます。
記録を残す
- 元のメールの ID・送り主・受信の日時・本文
- AIの書き出しの JSON と、規則が足した
sku・pieces・delivery_date・status - 取り消し・増減を当てた前の行と、差し引く前の数
- 担当が直した項目と直す前の値
- 送った返事と送信の日時
- 毎日の製造の指示の案と、責任者が確定した数(予備を含む)
- そのとき使った通称の表と入数の表の版
最後の行の「表の版」は、入数を直した日の前後で丁数が変わるために残します。 表を直した後に過去の注文を見返しても、当時の換算が分かります。
3つ目の「差し引く前の数」が、翌朝のもめごとを止めます。 「減らしたはずなのに届いた」と言われたとき、いつ、どの行から、何丁を引いたかが残っていれば、すぐに答えられます。
04実装レベルの3段階
最小構成は、書き出しの質を確かめる段階です。 半自動化で、1件4分が2分程度になります。 書き写しはなくなりますが、取り消しの当て先探しと締めの足し上げ、返事が手で残ります。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、取り消しの当て先探しと締めの足し上げが、13時台に担当の手を最も取っていた作業だからです。 半自動化のうちは、締めの集計を手と自動の両方で出して突き合わせます。 段階を飛ばさないでください。 半自動化の1か月で通称の表と入数の表を育ててから差し引きを足すほうが、取り消しの当て違いが減ります。
05工数削減シミュレーション
導入後 900件 × 1分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 地域の飲食店・スーパー・給食の業者に豆腐や揚げ物を毎日納める製造所で、注文の大半がメールで届き、事務の担当が1通ずつ読んで注文の表に書き写し、締めの時刻に品目ごとに足し上げて翌朝の製造数を決めている場合。得意先ごとに書き方(丁・ケース・枚、「いつも通り」「昨日の分を2丁減らして」)がばらばらで、書き写しの漏れや取り消しの見落としで作りすぎ・足りないが起きている場合。得意先の一覧と品目の一覧を Google スプレッドシートで持っている、または持てる場合。
- 得意先が数軒で、注文が電話と口頭だけの場合。大手のスーパーと EDI で受発注がつながっていて、注文がすでにデータで届いている場合。注文の大半が FAX の手書きの場合(その場合は文字の読み取りを先に入れる構成になります)。なお、製造数の確定、追加の注文を受けるかどうか、欠品のときの得意先の割り振りの判断はこの構成では代替できません。
07最小構成で試す方法
- 先月の注文のメールから50通を選ぶ(取り消し・増減と、「いつも通り」と、ケースで書かれたものを必ず入れる)
- 50通について、担当が実際に注文の表に書いた品目と丁数を書き出しておく
- 手元のAIサービスの画面に、1通ずつ本文を貼る
- 「この注文のメールから、品目・数・単位・納品日・行の種類(新規・増減・取り消し・いつも通り)を、書かれたとおりに書き出してください。丁数に直さない、日付に直さない、計算しないでください」と指示する
- 出てきた書き出しを、担当の書き写しと突き合わせる
50通は必ずやってください。 ワークフローを組む前に、取り消しを新規と取り違えないかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 書かれた語がそのまま出て、取り消しが分かれた | 通称と入数の表を作り、ワークフローに進む |
| ケースを丁数に直した、「揚げ」を決めた | 指示の書き方で直る。構成は有効 |
| 書き出しは合っているが、品目と入数が分からない | 表が先。 AIの問題ではない |
3行目がいちばん多く出ます。 品目と入数を知っていたのが担当の頭の中だけだった、ということです。50通の結果が、表の最初の版になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 14時の締めが動かない、時刻がずれる | タイムゾーンの既定が違う。ワークフローを Asia/Tokyo にする |
| 2品目以降の通称が当たらない | Get Row(s) が最初の1行だけ返している。Return All Matches にする |
| 担当が開いたメールが拾われない | Read Status の既定が未読だけ。ラベルで絞り、既読も対象にする |
| 前の注文の数をもう一度抜き出す | 引用を落としていない。前処理で落とす |
| 取り消しが新しい注文になる | 指示で行の種類を分け、cancel と change は差し引きで当てる |
| ケースが丁数に直されている | 指示で計算を禁じ、入数の表で掛け算する |
| 処理済みのメールをもう一度拾う | 処理済みのラベルを付ける前に止まった。ラベルは書き込みの後に付ける |
| スーパーの店舗と数がずれる | 1通のまま抜き出している。店舗の行で区切って渡す |
| 締め直前のメールが取りこぼされる | 1回の取り込みの上限。Max Emails per Poll を上げ、締めの前に未読を確かめる |
上の3行は n8n の設定の既定から来ます。 どれもAIとは関係がなく、最初に設定を確かめれば避けられます。
4行目から6行目は、AIに頼みすぎたときに起きます。 書き出しはAI、数は表、という線を守ってください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 得意先の名前とメールアドレス、注文の品目と数、納品の曜日、取引の量です。個人の情報は少ないですが、得意先ごとの取引の量は製造所の営業の情報です。
- AIに渡す範囲を本文に限る … 渡すのはメールの本文と得意先の名前だけです。入数の表・取引の量・単価はAIに渡しません
- 返事を人の確認なしに送らない … 丁数の誤りは得意先の店の仕込みに響きます
- 製造数を自動で確定しない … 予備の数と、締めの後の注文を受けるかは責任者が決めます
- 店主の個人のアドレスの扱いを決める … 飲食店は店主の個人のアドレスから送ってくることがあります。得意先の一覧に載せるアドレスは注文の受付に使うことを伝え、ほかの用途に使いません
- 表の変更の記録を残す … 通称の表と入数の表は、直すたびに翌朝の数が変わります。誰がいつ直したかを残します
食品の表示や衛生の管理は、この構成の対象外です。 製造の指示の表は数を決めるためのもので、ロットや温度の記録とは分けて持ちます。
誤りが起きた場合のリスクは、作りすぎて捨てることと、足りずに得意先に届かないことの2つです。 前者は取り消しを新規として足すと起き、後者は入数を取り違えると起きます。
10まず何から始めるか
1週目:通称の表と入数の表を作る
担当2名が、得意先ごとの通称と品番、ケース・箱の入数を書き出します。注文の多い上位20軒から始めます。 あわせて、得意先の一覧に送り主のアドレスの列を足します。
2週目:50通で試す
先月のメールから50通を選び、手元のAIサービスで書き出させます。取り消しを新規にしていないか、ケースを丁数に直していないかを最優先で見ます。 結果から、通称の表と入数の表の抜けを足します。
3週目:受け付けの流れをつなぐ
n8n で Gmail のラベルのメールを拾い、書き出しと換算を注文の表に足すところまで作ります。この時点では締めの集計は手で行い、自動の結果と突き合わせます。
4週目:14時の集計をつなぐ
Schedule Trigger と Summarize で品目ごとの合計を出し、手の集計と1週間突き合わせます。タイムゾーンを最初に確かめます。
2か月目: 取り消しの差し引きと返事の下書きを足します。3か月目以降: needs_check の割合と1件の時間を実測します。年末の繁忙を一度越え、取り消しの見落としが出なかった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Gmail Trigger の Message Received、Poll Times、Simplify(既定でオン)、Max Emails per Poll(既定10、最大50、超えた分は次の回)、Filters(Label Names or IDs、Read Status の既定が未読だけ、Sender、Search) | n8n Docs: Gmail Trigger node | 2026-10-28 |
| Information Extractor のスキーマの定義(Define using JSON Schema など)、System Prompt Template、出力の形式の指示が自動で足されること | n8n Docs: Information Extractor | 2026-10-28 |
| Anthropic Chat Model ノードの設定(モデル、最大トークン数、温度など) | n8n Docs: Anthropic Chat Model | 2026-10-28 |
| Get Row(s) の絞り込みが既定で最初の一致だけを返し、Return All Matches にできること。Append Row、Update Row が既存の行だけを更新すること | n8n Docs: Google Sheets sheet operations | 2026-10-28 |
| Summarize ノードの Sum などの集計と、Fields to Split By が GROUP BY のように働くこと | n8n Docs: Summarize | 2026-10-28 |
| Schedule Trigger の時刻の指定、ワークフローのタイムゾーンが無ければインスタンスのタイムゾーンが使われ、自分で立てた n8n の既定が America/New York であること。公開が必要なこと | n8n Docs: Schedule Trigger | 2026-10-28 |
| Gmail ノードの Create a draft と、Thread ID・To Email などのオプション | n8n Docs: Gmail draft operations | 2026-10-28 |
製造数の決め方と予備の数、締めの時刻は、製造所の取り決めに合わせてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2127)についてのご相談はこちらから。
