Media > AI活用ユースケース > 物流 > 荷主から届く配車依頼のメールとFAXを読み取って、配車表に転記する

荷主から届く配車依頼のメールとFAXを読み取って、配車表に転記する

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

メール・FAX・Webフォームでばらばらに届く配車依頼を読み取り、集荷日時・積地・卸地・品目・重量・車格・付帯作業を配車表に1行ずつ書き込みます。足りない項目があれば、荷主への問い合わせ文案まで作ります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Make/Power Automate/Zapier
対象業界
商社/小売/建設/物流/製造
対象部門
物流
対象業務
データ入力・転記/台帳・マスタ管理
主な課題
人手が足りない/入力作業が多い/期限・対応漏れが起きる
AIで行う処理
抽出
主な効果
入力漏れ削減/対応スピード向上/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
87.5h/月
AI導入後
25h/月
想定削減
71%
年間削減
750h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 受付アドレスに届いたメールとFAXのPDFを、上から順に開く
  2. Webフォームから届いた依頼は、通知メールを開いて中身を確認する
  3. 依頼ごとに、集荷日・時間帯・積地・卸地・品目・重量・車格・付帯作業を読み取る
  4. 配車表を開き、荷主名と積地の住所を確かめながら1行ずつ打ち込む
  5. 書かれていない項目や読めない文字があれば、メモを残しておく
  6. 手が空いたところで荷主に電話するか、聞き直しのメールを書く
  7. 返事が来たら、配車表の該当行を直す
導入後(After)
  1. 自動受付アドレスに届いたメールを、Zapier の受信用アドレスに転送する
  2. 自動受信日時を日本時間に直し、送信元のアドレスで荷主の一覧を引く
  3. 自動FAXのPDFが添付されていれば、生成AIのAPIにファイルとして上げる
  4. 自動生成AIが依頼の種別(新規/変更/取り消し/依頼ではない)と、便ごとの項目を取り出す
  5. 自動項目ごとに「明記」「なしと明記」「記載なし」「判読不能」を付け、足りない項目の問い合わせ文案を作る
  6. 自動新規の依頼は、配車表の受付シートに「要確認」の行として書き込む
  7. 自動変更・取り消し・複数便・判読不能を含むものは、書き込まずに担当者へ通知する
  8. 人配車担当が「要確認」の行を原文と見比べ、確定させる
  9. 人問い合わせ文案を確かめ、荷主へ送る
  10. 人確定した行をもとに、これまでどおり配車を組む
各工程の詳しい説明を読む
  1. 受付アドレスに届いたメールとFAXのPDFを、上から順に開く
  2. Webフォームから届いた依頼は、通知メールを開いて中身を確認する
  3. 依頼ごとに、集荷日・時間帯・積地・卸地・品目・重量・車格・付帯作業を読み取る
  4. 配車表を開き、荷主名と積地の住所を確かめながら1行ずつ打ち込む
  5. 書かれていない項目や読めない文字があれば、メモを残しておく
  6. 手が空いたところで荷主に電話するか、聞き直しのメールを書く
  7. 返事が来たら、配車表の該当行を直す

(a)打ち込みの時間がそのまま配車の時間を削る。 依頼が集中する夕方に転記が重なり、配車を組む前に表が埋まっていない状態が続きます。 1件の転記は数分ですが、それが数十件続きます。

(b)付帯作業と時間指定が落ちる。 品目と重量は目に入りやすい一方、「手降ろし」「納品は10時まで」「現場は2t車しか入れない」といった条件は本文の後ろや備考欄に書かれます。転記のときに落ちると、当日現場で分かります。

(c)「なし」と「書いていない」の区別がつかない。 付帯作業の欄が空欄の依頼を「なし」として配車すると、現場で手積みだったときに作業時間も運賃も合わなくなります。 本来は聞き直すべき依頼ですが、忙しい日ほど聞かずに流れます。

(d)聞き直しが後回しになる。 6番目の連絡は、転記が全部終わってからになりがちです。翌朝の集荷に間に合わない時間になってから問い合わせることもあります。

  1. 【自動】 受付アドレスに届いたメールを、Zapier の受信用アドレスに転送する
  2. 【自動】 受信日時を日本時間に直し、送信元のアドレスで荷主の一覧を引く
  3. 【自動】 FAXのPDFが添付されていれば、生成AIのAPIにファイルとして上げる
  4. 【自動】 生成AIが依頼の種別(新規/変更/取り消し/依頼ではない)と、便ごとの項目を取り出す
  5. 【自動】 項目ごとに「明記」「なしと明記」「記載なし」「判読不能」を付け、足りない項目の問い合わせ文案を作る
  6. 【自動】 新規の依頼は、配車表の受付シートに「要確認」の行として書き込む
  7. 【自動】 変更・取り消し・複数便・判読不能を含むものは、書き込まずに担当者へ通知する
  8. 【人】 配車担当が「要確認」の行を原文と見比べ、確定させる
  9. 【人】 問い合わせ文案を確かめ、荷主へ送る
  10. 【人】 確定した行をもとに、これまでどおり配車を組む

8番目が、この設計の分かれ目です。 行は自動で書き込まれますが、確定させるのは人です。 原文と並べて見比べるので、転記のし直しは要りません。全件を打ち込む作業が、全件を見比べる作業に変わります。

7番目を規則で決めているのも、意図してのことです。 変更か新規かの見分けはAIにさせますが、変更と判定されたものを配車表のどこに反映するかは人が決めます。 既にある行を機械が上書きすると、手配済みの車と表が食い違うからです。

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

構成図
配車依頼(メール本文・FAXのPDF・Webフォームの通知メール)
   │  受付アドレスから自動転送
   ▼【トリガー】Email by Zapier(New Inbound Email)
Zapier
   ├──▶ Formatter:受信日時を日本時間に変換
   ├──▶ Google スプレッドシート:荷主一覧を送信元アドレスで引く
   ├──▶ Webhooks:PDFを OpenAI の Files API に上げる(添付があるときだけ)
   ▼
OpenAI API(Responses API/構造化出力)
   │   依頼の種別、便ごとの項目、項目ごとの記載状態、問い合わせ文案
   ▼
Zapier Paths ── 新規(全項目明記)/新規(記載なしあり)/変更・取り消し/その他
   ▼
Google スプレッドシート:受付シートへ「要確認」の行を追加
   ▼
【人が原文と見比べて確定・問い合わせを送信】
   ▼
配車担当が配車を組む(この構成の外)
役割想定する製品代替候補
ワークフローZapierPower Automate、Make
生成AIOpenAI API(Responses API、PDF入力と構造化出力)AI by Zapier、Claude API、Gemini API
受信Email by ZapierIMAP by Zapier、Gmail の連携
台帳Google スプレッドシート(受付シートと荷主一覧)Excel Online、kintone

配車表そのものは、新しく足すものではありません。 今の配車表に「受付シート」を1枚足し、自動で書き込むのはそこだけにします。配車を組むシートには、人が確定させた行だけが移ります。 荷主一覧も、既に持っている連絡先の表に「既定の積地」と「よく使う車格」の列を足す程度です。

入り口は Email by Zapier にします。 受信用に @zapiermail.com のアドレスを作り、受付アドレスから自動転送します。

生成AIの役を OpenAI API にしたのは、FAXのPDFを読むためです。 視覚に対応したモデルでは、PDFからテキストと各ページの画像の両方を取り出してモデルに渡すとされ、文字が画像になったFAXに向きます。

AI by Zapier を本命にしなかった理由も書いておきます。 AI by Zapier は組み込みのAIの手順で、返す項目を名前・型・必須で定義でき、配列でも返せます。 メール本文だけならこれで足ります。ただ、文書はスキャンしたものよりPDFとして作られたもののほうがうまく動くとされ、画像の解析には公開の画像が要ります。FAXの依頼書は公開できないので、PDFはAPIに直接渡します。

Zapier から OpenAI API を呼ぶのは Webhooks です。 ファイルを送れるのはPOSTかPUTで、Custom Request ではファイルを送れません。 一方、構造化出力の指定は入れ子のJSONになるので、Custom Request で書きます。そのため、PDFを上げる手順と、読み取りを頼む手順を2つに分けます。

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

Step1

処理の起点を決める

受付アドレスに依頼が届いたことを起点にします。 受付アドレスからZapierの受信用アドレスへ自動転送を設定し、Email by Zapier の「New Inbound Email」で受けます。1時間おきにまとめて処理する形にはしません。 夕方に集中する依頼を、届いた順に表に出していくためです。

3経路はすべてメールにそろえます。 FAXは複合機でPDFにしてメールで転送し、Webフォームは送信のたびに通知メールを受付アドレスへ送る設定にします。入り口を1つにしておくと、どれか1経路だけが転記されない日ができません。

気をつけたい点が2つあります。 Email by Zapier はいつZapが動くかを保証しておらず、遅れることがあるとされています。時間に厳しい処理では IMAP by Zapier や、アプリとの直接の連携を使うよう案内されています。当日の急ぎの依頼は、これまでどおり電話で受ける前提にしてください。 もう1つは、送信元のアドレスが無いメールではZapが動かないことです。Webフォームの通知メールがこれに当たることがあるので、最初に確かめます。

Step2

入力データを集める

データ中身取得元
依頼メール送信元、件名、本文、受信日時Email by Zapier
添付ファイルFAXをPDFにしたもの、荷主が作った依頼書のPDF同上
荷主一覧荷主コード、名称、送信元アドレス、既定の積地、よく使う車格、連絡先Google スプレッドシート
車格の表記一覧「4t」「4tワイド」「増トン」「ユニック」などの書き方と、自社の車格の対応Google スプレッドシート
直近の受付同じ荷主の直近の受付行(集荷日、卸地、品目)受付シート

質を決めるのは、荷主一覧です。 「いつもの倉庫」と書かれた依頼は、荷主一覧に既定の積地が無ければ住所になりません。ただし、AIに荷主一覧を渡して埋めさせることはしません。 AIは「いつもの倉庫」とだけ書き出し、既定の積地を当てるのはワークフローです。どこまでが依頼に書かれていて、どこからが自社で補ったのかを、行の中で分けて残すためです。

直近の受付は、変更か重複かを見分けるために持ちます。 同じ荷主から、同じ集荷日・同じ卸地の依頼が短い間隔で2通来たら、FAXとメールの二重送信か、内容の変更かのどちらかです。

Step3

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

取るものどこから何に使うか
送信元・本文・添付Email by Zapier のトリガー読み取りの材料
受信日時(日本時間)Formatter の Date / Time「明日」「来週月曜」を日付にする基準
荷主の行Google Sheets の Lookup Spreadsheet Row荷主コードと既定の積地
直近の同じ依頼Lookup Spreadsheet Row(補助の列を足した検索)二重送信と変更の検知
PDFのファイルIDWebhooks の POST で Files API へ上げた結果読み取りを頼む手順で参照

受信日時は、必ず日本時間に直してから渡します。 Formatter の日付変換では、元のタイムゾーンを入れないと入力はUTCとして扱われ、夜の依頼の「明日」が1日ずれます。

荷主は、送信元のアドレスで引きます。 Lookup Spreadsheet Row は、列と値で探して最初に一致した行を返し、補助の列で2条件の検索も、最後の行からの検索もできます。 直近の受付は「荷主コード」と「集荷日」で最後の行から探します。

PDFは、OpenAI の Files API に上げます。 用途を user_data にして上げ、返ったファイルIDを次の手順で input_file として参照します。Webhooks で送れるのは5MBまでです。

Step4

AIへ渡す前に整形する

  1. 空のメールの除外 … 転送設定の確認メールなど、本文も添付も無いものは記録だけ残します
  2. 大きさの確認 … メールは添付込みで10MB未満、Webhooks で送るPDFは5MBまでです。超えるものは人に回します
  3. 添付の種類の確認 … PDF以外(画像、Excel)は、この段階では人に回します
  4. 本文の整理 … 署名、過去のやり取りの引用、定型の免責文を落とします。引用部分に古い依頼が残っていると、2件分を読み取ります
  5. 受信日時の変換 … 日本時間の日付と曜日にします
  6. 荷主の特定 … 送信元のアドレスで荷主一覧を引きます。引けない場合は荷主不明として続行し、行には書き込みません
  7. 二重送信の検知 … 同じ荷主・同じ集荷日の行が直近にあれば、その行の中身を読み取りの手順へ一緒に渡します

4番目を軽く見ないでください。 返信の形で届く依頼は、下に前回の依頼がそのまま引用されています。引用を落とさないと、前回分を新しい依頼として書き込みます。 確実に落とせない場合に備えて、指示の側でも「引用部分は読まない」と書いておきます。

Step5

AIに処理させる

させるのは、依頼の種別を見分けることと、便ごとに項目を取り出し、項目ごとに記載の状態を付けることです。 そのうえで、「記載なし」「判読不能」の項目だけを並べた問い合わせ文案を作らせます。

取り出す項目取り出し方判断できないときの扱い
集荷日・時間帯書かれた文字列をそのまま残し、受信日を基準に日付へ直す「明日」などの相対表現は印を付ける。曜日と日付が合わなければ unclear
積地住所または名称を書かれたとおりに「いつもの」「前回と同じ」は文字列のまま。住所に直さない
卸地・納品日時積地と同じ。「10時必着」「午前中」も書かれたとおりに時間指定が無ければ not_stated
品目・数量書かれたとおりに。パレット枚数やケース数も残す品目が無ければ not_stated
重量単位を付けて書かれたとおりにパレット数から重量を計算しない
車格書かれた表記のまま車格の表記一覧に無ければ unclear
付帯作業手積み・手降ろし、横持ち、待機、ゲート車など「なし」と書かれていれば stated_none、何も無ければ not_stated

右端の列の、付帯作業の行が、この構成でいちばん大事な区別です。 stated_none は荷主が「付帯作業なし」と明記したということ、not_stated は何も書かれていないということです。前者はそのまま配車に回せ、後者は聞き直すべきものです。

集荷日の相対表現にも気をつけます。 夜遅くに届いた依頼の「明日」が、荷主にとってどの日かは分かりません。日付に直したうえで relative の印を付けます。

させないこと理由
車の割り当て・便の組み立て配車担当の判断。車両の空きも運転者の勤務も見ていない
受けるか断るかの判断荷主との取り決めと、その日の車両の状況による
既定の積地の当てはめワークフローが荷主一覧で行う。依頼に書かれていたかどうかを残すため
重量の換算・推定パレット数や品目から計算すると、車格を誤って選ぶ根拠になる
運賃の計算付帯作業の有無が分からないまま出すと、後で合わなくなる

4行目がいちばん起きやすい失敗です。 「鋼材 パレット8枚」とだけ書かれた依頼を渡すと、1枚あたりの重さを見積もって重量を埋めます。埋まった数字は、それらしく見えるぶん聞き直しの対象から外れます。

Step6

指示内容を固定する

あなたは運送会社の配車課で、荷主から届いた配車依頼を受け付ける立場です。
依頼の本文と添付のPDFだけを読み、書かれていることを取り出してください。
推測で埋めないでください。

【最初に決めること:request_type】
- new ....... 新しい配車の依頼
- change .... 既に依頼した内容の変更(日時・重量・卸地などを変える)
- cancel .... 既に依頼した内容の取り消し
- other ..... 配車の依頼ではない(請求、挨拶、営業など)
「先ほどの件」「変更です」「以下に訂正」などがあれば change を検討してください。
【直近の受付】に同じ集荷日・同じ卸地の行があれば、その内容と比べてください。

【便ごとに取り出す項目】
集荷日、集荷時間帯、積地、卸地、納品日、納品時間帯、品目、数量、重量、車格、付帯作業
1通に複数の便があるときは、便ごとに分けて shipments に並べてください。

【各項目の status】
- stated ....... 値が書かれている
- stated_none .. 「なし」「不要」と明記されている
- not_stated ... 何も書かれていない
- unclear ...... 文字はあるが読めない、または意味が1つに決まらない
迷ったときに stated を選ばないでください。

【厳守事項】
- 書かれていない項目は value を null、status を not_stated にしてください。
  他の項目や一般的な相場から補って埋めないでください。
- 付帯作業について何も書かれていないことを、「なし」として扱わないでください。
- 「いつもの倉庫」「前回と同じ」は、その文字列をそのまま value に入れてください。
  住所に直さないでください。
- 重量は書かれた数字と単位をそのまま入れてください。
  パレット数やケース数から重量を計算しないでください。
- 車格は書かれた表記のまま入れてください(例:4tワイド、ユニック)。
- 日付は raw に書かれた文字列を、date に【受信日時】を基準にした日付を入れてください。
  「明日」「来週」など相対的な表現なら relative を true にしてください。
  書かれた曜日と日付が合わない場合は status を unclear にしてください。
- メールの引用部分(「>」で始まる行や、過去のやり取り)は読まないでください。
- evidence には、根拠にした原文をそのまま写してください。
- どの車に載せるか、受けられるかは書かないでください。

【問い合わせ文案】
not_stated と unclear の項目だけを、便ごとに箇条書きで尋ねる文面を作ってください。
値を推測して「〜でよろしいでしょうか」と書かないでください。

【受信日時】{received_at_jst}
【荷主】{shipper_name}
【直近の受付】{recent_rows}
【本文】{body_text}

「付帯作業について何も書かれていないことを、なしとして扱わない」を明記しないと、stated_none になります。 依頼の多くは付帯作業に触れていないので、AIは「特に作業はない」と読みます。禁じるのは、触れていないことを否定と読む判断そのものです。

「〜でよろしいでしょうか」を禁じるのは、 推測を添えて尋ねると、荷主が確かめずに「はい」と返しがちだからです。

Step7

出力形式を固定する

構造化出力で、次の形のJSONを受け取ります。

{
  "request_type": "new | change | cancel | other",
  "change_target": { "pickup_date": null, "delivery_place": null },
  "shipments": [
    {
      "pickup_date": { "raw": "明日AM", "date": "2026-10-02", "relative": true,
                       "status": "stated", "evidence": "明日AM" },
      "pickup_place": { "value": "いつもの倉庫", "status": "stated", "evidence": "" },
      "cargo_weight": { "value": null, "status": "not_stated", "evidence": null },
      "extra_work": { "value": null, "status": "not_stated", "evidence": null }
    }
  ],
  "inquiry_draft": ""
}

各便には、ほかの項目(集荷時間帯・卸地・納品日時・品目・数量・車格)も同じ形で並べます。

1つ目の理由は、項目を落とさせないことです。 構造化出力では、指定したJSONスキーマに沿った応答を常に返し、必須のキーの欠落や選択肢の外の値を防ぐとされています。すべての項目を必須にし、additionalProperties を false にします。

2つ目は、「書かれていない」を形で表せることです。 すべての項目が必須なので、書かれていない値は型に null を加えた項目で表します。value が null で status が not_stated、が「聞き直す」の印です。

"extra_work": {
  "type": "object",
  "additionalProperties": false,
  "required": ["value", "status", "evidence"],
  "properties": {
    "value":    { "type": ["string", "null"] },
    "status":   { "type": "string", "enum": ["stated", "stated_none", "not_stated", "unclear"] },
    "evidence": { "type": ["string", "null"] }
  }
}

ただし、構造化出力が保証するのは形で、値の誤りまでは防げません。 だから evidence に原文を写させ、確認の画面で並べて見せます。既定の積地を当てたときも pickup_place は「いつもの倉庫」のまま残し、当てた住所は受付シートの別の列に書きます。

Step8

システムへ連携する

つなぎ先方式内容
OpenAI Files APIWebhooks の POSTPDFを上げてファイルIDを受け取る
OpenAI Responses APIWebhooks の Custom Request構造化出力で読み取り結果を受け取る
Paths条件分岐request_type と記載状態で振り分け
受付シート行の追加新規で単一の便のものだけ「要確認」で書く

Paths は、決めた規則でZapの手順を分ける機能です。 最大10本の枝を置け、どの規則にも当たらなかったときだけ動く枝も作れます。ここでは4本にします。

枝条件動き
新規・そろっているnew、便が1つ、not_stated と unclear が無い受付シートへ「要確認」で追加
新規・聞き直しありnew、便が1つ、not_stated か unclear がある追加し、問い合わせ文案を同じ行に入れる
変更・取り消しchange か cancel書き込まず、担当者へ通知
それ以外当てはまらないもの(複数便、other、荷主不明)担当者へ通知

複数便の依頼を最後の枝に回しているのは、半自動化の段階の割り切りです。 1通の依頼を便の数だけ行に分けて書く組み方は、利用するアクションとプランによって変わります。まずは人が分けて入力し、件数を見てから組むかを決めます。

配車を組むシートには書き込みません。 自動で書くのは受付シートだけです。機械が書いた行が、確かめられないまま配車に使われる経路を作らないためです。

Step9

人が確認する

配車担当は、受付シートの「要確認」の行を、原文と並べて見ます。 行には evidence と、元のメールへのリンクを入れておきます。

  1. relative の印がある日付を先に見る … 「明日」が荷主の意図どおりの日付になっているかを確かめます
  2. 既定の積地を当てた行を見る … 「いつもの倉庫」が今回も同じ倉庫かを、必要なら問い合わせ文案に1行足します
  3. 付帯作業が not_stated の行を見る … ここは省かないでください。 聞き直すかどうかをこの場で決めます
  4. 問い合わせ文案を直して送る … 送信は人が行います。電話で済ませた場合も、行に記録します
  5. 確定させる … 状態を「確定」にし、配車を組むシートへ移します

3番目を省くと、この構成を入れた意味が半分になります。 書かれていなかった付帯作業は、転記の時点でしか拾えません。 配車が決まった後では、荷主に聞く理由がなくなります。

目標は、750件をならして1件2分です。 そろっている依頼は見比べるだけで1分かからず、聞き直しのある依頼は文案を直して送るので数分かかります。2分を大きく超える月は、荷主一覧の既定の積地か、車格の表記一覧が足りていません。

Step10

例外に対処する

起きること対応
メールが10MB以上Email by Zapier で受けられない。受付アドレスに残るので、未処理として人が拾う
PDFが5MBを超えるWebhooks で送れない。担当者へ通知し、手で転記する
送信元アドレスの無い通知メールZapが動かない。Webフォームの通知設定を直す
Zapの起動が遅れる保証されていない。急ぎの依頼は電話で受ける運用を残す
荷主一覧に送信元が無い荷主不明として通知。担当の転職や新しい窓口であることが多い
FAXがかすれて読めない該当項目が unclear。荷主にFAXの再送を頼む文案を出す
変更・取り消しのメール書き込まず通知。人が元の行を探して直す
FAXとメールで同じ依頼が届く直近の受付と一致すれば、重複の候補として通知
応答が途中で切れる出力の上限で打ち切られた状態を検知し、人に回す
安全上の理由で応答が拒否される拒否は構造化出力とは別の項目で返る。人に回す

上の3行とFAXのかすれが大半です。 どれも受け取り方の問題で、直すほうが精度を上げるより効きます。

Step11

記録を残す

  • 元のメール(本文と添付)と、受信日時、Zapが動いた日時
  • 生成AIに渡した本文と、返ってきたJSONの全文
  • 受付シートに書いた行と、既定の積地を当てたかどうか
  • 人が直した項目と、直す前後の値
  • 問い合わせを送った日時と、荷主の返答で埋まった項目
  • 荷主ごとの not_stated の多い項目

1つ目で2つの時刻を残すのは、起動の遅れを測るためです。 差が夕方に広がるなら、IMAP by Zapier への切り替えを検討します。

最後の行は、荷主と相談する材料になります。 毎回付帯作業を書かない荷主には、依頼書のひな形に欄を足してもらうほうが、聞き直しを毎回続けるより早く片づきます。

04実装レベルの3段階

最小構成:本文やPDFを手でAIの画面に貼り、項目と記載状態を出させる / 1件ごとの読み取り
半自動化:上記+受付アドレスを起点にZapが動き、受付シートへ「要確認」の行と問い合わせ文案を書く / 読み取り、転記、文案の作成
本格構成:上記+複数便の分割、荷主の返答を読んで同じ行を埋める、確定後の配車シートへの移し替え / 受付から確定前までの全体

本記事の想定は半自動化です。 1件7分が2分になるのはこの段階で、転記と文案の作成が自動になり、見比べと送信が人に残ります。 本格構成は、半自動化を1か月回してから考えます。 荷主の返答を読んで行を埋める手順は、返答が元の依頼のどの便を指しているかを見分ける必要があり、変更の見分けと同じ難しさがあります。 半自動化の記録を見ると、どの荷主の返答なら機械で埋めてよいかが先に分かります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 荷主や元請けから月に数百件の配車依頼を受ける中小の運送会社。依頼がメール本文・FAX・Webフォームの3経路に分かれ、書式が荷主ごとにばらばらな場合。配車表をスプレッドシートで持っていて、転記と聞き直しに配車担当の時間が取られている場合。荷主ごとの既定の積地や連絡先を一覧にできる場合。
向いていない
  1. 依頼の大半がすでにEDIや荷主専用の受発注システムで届き、項目が機械的にそろっている場合。荷主が数社で、毎回同じ書式の依頼が届く場合。当日の急ぎの依頼が電話中心で、メールやFAXがほとんど無い場合。なお、どの車に載せるか、受けるか断るかという配車の判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の依頼から30件を選ぶ(メール本文・FAX・Webフォームを混ぜ、聞き直しが必要だったものを数件入れる)
  2. その30件について、配車表にどう転記したか、何を聞き直したかを確かめる
  3. 手元のAIサービスの画面に、1件ずつ本文またはPDFを貼り付ける
  4. 「この配車依頼から、集荷日・時間帯・積地・卸地・納品日時・品目・重量・車格・付帯作業を取り出してください。書かれていない項目は『記載なし』、『なし』と書かれている項目は『なしと明記』と分けてください。推測で埋めないでください」と指示する
  5. 出てきた結果を、当時の転記と聞き直しの内容と突き合わせる

30件は必ずやってください。 Zapを組む前に、「書かれていない」を正しく拾えるかを確かめます。

出てきた内容判断
当時聞き直した項目が「記載なし」で出たZapier での連携に進む
付帯作業の空欄が「なし」になった指示の書き方で直る。構成は有効
FAXの文字が読めない件数が多い複合機のFAX受信の解像度が先。 AIの問題ではない

2行目はほぼ必ず出ます。 指示に一文足すだけで変わるかを、同じ30件で確かめてください。変わらないなら、付帯作業だけを別の問いで尋ねる形に分けます。

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

問題対策
付帯作業の空欄が「なし」で転記されるstated_none と not_stated を分け、指示に明記する
パレット数から重量が埋まる計算を禁じ、重量が stated なのに原文に数字が無い行を検知する
変更のメールが新しい行になるchange は書き込まない。直近の受付を一緒に渡して比べさせる
引用部分の古い依頼を読む前処理で引用を落とし、指示でも読まないと書く
夜の依頼の「明日」がずれるFormatter で変換元のタイムゾーンを必ず入れる。入れないとUTC扱い
Webフォームの依頼でZapが動かない送信元アドレスの無いメールでは動かない。 通知の送信元を設定する
夕方にZapの起動が遅れるEmail by Zapier は起動を保証しない。遅れを記録し、IMAPへの切り替えを検討
PDFを Custom Request で送ろうとして失敗するファイルはPOSTかPUTで。上げる手順と読む手順を分ける
「いつもの倉庫」が住所に化けるAIに荷主一覧を渡さない。当てるのはワークフロー
問い合わせが自動で飛ぶ文案までにする。 送信は人が行う

上の3行が、この構成の失敗のほとんどです。 どれも「書かれていないものを埋める」か「別の依頼を新しい依頼として読む」かのどちらかで、現場で初めて分かる形で表に出ます。

下の2行も、同じくらい早く効いてきます。 既定の積地を当てたことが行に残っていないと、荷主が別の倉庫を使った日に気づけません。

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

この構成で扱うデータ: 荷主の名称と担当者の連絡先、積地・卸地の住所、品目と数量、納品先の現場名です。建設現場や小売店の納品先は、荷主にとって取引先の情報でもあります。

  1. 外部へ渡す範囲を、読み取りに必要なものまでに限る … 生成AIに渡すのは本文とPDFだけにし、荷主一覧や過去の配車表そのものは渡しません。 直近の受付も、比べるのに要る列だけにします
  2. アップロードしたPDFの扱いを決めておく … Files API に上げたファイルをいつ消すかは、利用する環境の設定と運用で決める必要があります。 本記事で確認したページには保存期間の記載が無かったため、契約と管理画面で確かめてください
  3. 問い合わせを自動で送らない … 出すのは文案までです。推測の混じった問い合わせは、荷主との取り決めを勝手に書き換えることになりかねません
  4. 配車の判断を代替しない … どの車に載せるか、受けるか断るかは配車担当が決めます。この構成が出すのは、依頼に何が書かれていたかという事実だけです
  5. FAXの依頼書を公開の場所に置かない … 画像の解析のために公開のリンクを作る方法は取りません

誤りが起きた場合のリスクは、書かれていない条件を見落として配車することと、同じ依頼に2台を手配することの2つです。 前者は not_stated を「なし」に混ぜると起き、後者は変更を新規として書き込むと起きます。どちらも「書かれていたか」「新しい依頼か」という区別から出ているので、そこだけは設計で守ります。

10まず何から始めるか

1週目:荷主一覧に2つの列を足す

今の荷主の連絡先の表に、送信元アドレスの列と既定の積地の列を足します。60社すべてを一度に埋める必要はありません。依頼の多い上位15社から埋めます。 この15社で月の依頼の大半が埋まります。あわせて、車格の表記一覧を作ります。

2週目:30件で試す

先月の依頼から30件を選び、手元のAIサービスに貼り付けて項目と記載状態を出させます。付帯作業の空欄が「なし」になっていないかを最優先で見ます。

3週目:入り口を1つにする

FAXの転送先とWebフォームの通知先を受付アドレスにそろえ、Zapier の受信用アドレスへの自動転送を設定します。Webフォームの通知メールに送信元アドレスが入っているかを、ここで確かめます。

4週目:受付シートへの書き込みまでつなぐ

Formatter、荷主一覧の検索、Webhooks での呼び出しを組み、受付シートに「要確認」の行が出るところまで作ります。この時点では Paths を置かず、全件を人が見て、変更の見分けが合っているかを数えます。

2か月目: Paths で4本の枝に分け、問い合わせ文案を行に入れます。3か月目以降: 1件7分が何分になったかを実測し、荷主ごとの not_stated の多い項目を見て、依頼書のひな形の相談を始めた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-09-25/最終更新:2026-09-25
確認した内容情報源確認日
New Inbound Email と @zapiermail.com のアドレス。添付込み10MB未満。起動は保証されず遅れうること(時間に厳しい処理は IMAP などを案内)。送信元アドレスの無いメールでは動かないことZapier: Trigger Zaps from new emails2026-09-25
ファイルはPOSTとPUTで送れ、Custom Request では送れないこと。Custom Request は入れ子のJSONを書いたとおりに送ること。送信量が5MBまでであることZapier: Send webhooks in Zaps2026-09-25
返す項目を名前・型・必須で定義でき、配列でも返せること。文書はスキャンよりPDFで作られたものが向くこと。画像の解析は公開の画像が必要なことZapier: Use AI by Zapier to analyze and return data2026-09-25
Lookup Spreadsheet Row が最初に一致した行を返し、補助の列で2条件、最後の行からも探せることZapier: Find and update spreadsheet rows in Google Sheets2026-09-25
変換元のタイムゾーンを入れないとUTC扱いになること。無料のプランでは使えないことZapier: Modify date and time formats in Zaps2026-09-25
規則で手順を分け、最大10本の枝と、当たらなかったときの枝を置けること。無料のプランでは使えないことZapier: Add branching logic to Zaps with Paths2026-09-25
視覚に対応したモデルではPDFのテキストと各ページの画像を渡すこと。用途 user_data で Files API に上げ、input_file で参照できることOpenAI: File inputs(PDF files)2026-09-25
スキーマに沿った応答を返すこと。全項目を必須にし任意の値は null との組み合わせで表すこと。additionalProperties は false。値の誤りは防げないこと。拒否と出力上限での途中終了を判別できることOpenAI: Structured Outputs2026-09-25

どの依頼を受けるか、どの車に載せるかは、配車担当と荷主との取り決めで決めてください。 本記事は各社の公式ページで確認できた範囲だけを扱っています。

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

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

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

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