段ボール・ラベル・緩衝材などの包装資材の翌月の使用量を、生産計画と過去の使用実績から見込み、発注の時期と量の案を購買に渡す
翌月の生産計画と製品ごとの包装資材の原単位から、段ボール・ラベル・緩衝材の使用量を品目ごとに見込みます。在庫・発注残・調達期間と照らし、いつまでに何枚発注するかの案を購買に渡します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- EC/物流/製造
- 対象部門
- 生産/購買
- 対象業務
- 書類作成/集計・分析
- 主な課題
- データ分析に時間がかかる/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 予測
- 主な効果
- 属人化解消/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 翌月の生産計画が固まったら、生産管理の担当者が計画表を製品ごとに集計する
- 製品ごとの計画数量に、原単位表の数字(1ケースあたりの段ボール・ラベルの枚数など)を掛けて、資材ごとの使用量を出す
- 過去の実績を思い出しながら、資材ごとに「いつもこれくらい多めに使う」分を上乗せする
- 資材の在庫表と、購買の発注一覧の発注残を見て、足りなくなる時期を見積もる
- 調達期間と最小の発注単位、棚の空きを見て、発注の時期と量を決める
- 営業や品質保証からのメールを見返し、新製品や版替えの予定がある資材の量を手で直す
- 品目ごとの発注の案を購買に渡し、購買が仕入先に発注する
- 人生産管理の担当者が、翌月の生産計画のCSVを決まったシートに貼る(計画の変更のたびに貼り直す)
- 自動Google Apps Script が、生産計画と原単位表から、資材ごと・週ごとの理論の使用量を出す
- 自動Apps Script が、過去6か月の理論の使用量と実際の出庫量を比べ、資材ごとの補正係数を出す
- 自動Gemini API が、計画変更の連絡を集めたシートを読み、影響する資材と変化の種類(版替え・新製品・荷姿の変更など)を書き出す
- 自動Apps Script が、見込んだ使用量を在庫・発注残と照らし、在庫が安全日数を割る日を出す。調達期間を引いて発注の期限日を決め、最小の発注単位と棚の上限で量を丸める
- 自動発注の案のシートに、品目ごとの期限日・量と、確かめが要る理由の印を書き込む
- 人生産管理の担当者が、印の付いた品目を確かめ、量を直す
- 人購買が、確かめの済んだ案をもとに仕入先へ発注する
各工程の詳しい説明を読む
- 翌月の生産計画が固まったら、生産管理の担当者が計画表を製品ごとに集計する
- 製品ごとの計画数量に、原単位表の数字(1ケースあたりの段ボール・ラベルの枚数など)を掛けて、資材ごとの使用量を出す
- 過去の実績を思い出しながら、資材ごとに「いつもこれくらい多めに使う」分を上乗せする
- 資材の在庫表と、購買の発注一覧の発注残を見て、足りなくなる時期を見積もる
- 調達期間と最小の発注単位、棚の空きを見て、発注の時期と量を決める
- 営業や品質保証からのメールを見返し、新製品や版替えの予定がある資材の量を手で直す
- 品目ごとの発注の案を購買に渡し、購買が仕入先に発注する
(a)品目ごとの手計算に時間がかかる。 160品目について、計画の集計、原単位の掛け算、在庫と発注残の確認を1品目ずつ行います。1つの段ボールを複数の製品が使っていることもあり、どの製品の計画を足せばよいかを原単位表で探すところから始まります。
(b)上乗せの勘所が担当者の頭の中にある。 3番目の「いつも多めに使う分」は、どこにも書かれていません。組み損じの多い大きな箱、貼り直しの多い小さなラベル、試作でよく使われる個装箱を、長年の担当者が覚えているだけです。担当者が休むと、上乗せなしで発注されて月末に足りなくなります。
(c)計画表に出ない変化を見落とす。 6番目は、メールを覚えている範囲でしか行われません。版替えの連絡を見落とすと旧版の資材が余り、新製品の立ち上げを見落とすと新しい箱が届かないまま生産日を迎えます。
(d)気づいたときには調達期間が足りない。 計画が月の途中で増えたとき、見直しが次の月初まで行われないことがあります。印刷の入った段ボールは3〜4週間かかるので、気づいた時点で間に合わず、包装ラインを止めるか、無地の箱で代用して得意先に断りを入れることになります。
- 【人】 生産管理の担当者が、翌月の生産計画のCSVを決まったシートに貼る(計画の変更のたびに貼り直す)
- 【自動】 Google Apps Script が、生産計画と原単位表から、資材ごと・週ごとの理論の使用量を出す
- 【自動】 Apps Script が、過去6か月の理論の使用量と実際の出庫量を比べ、資材ごとの補正係数を出す
- 【自動】 Gemini API が、計画変更の連絡を集めたシートを読み、影響する資材と変化の種類(版替え・新製品・荷姿の変更など)を書き出す
- 【自動】 Apps Script が、見込んだ使用量を在庫・発注残と照らし、在庫が安全日数を割る日を出す。調達期間を引いて発注の期限日を決め、最小の発注単位と棚の上限で量を丸める
- 【自動】 発注の案のシートに、品目ごとの期限日・量と、確かめが要る理由の印を書き込む
- 【人】 生産管理の担当者が、印の付いた品目を確かめ、量を直す
- 【人】 購買が、確かめの済んだ案をもとに仕入先へ発注する
7番目が、この設計の分かれ目です。 担当者が開くのは、版替え・新製品の影響がある品目、補正係数が大きく動いた品目、期限日が近い品目だけです。印の無い品目は、一覧で件数と合計を流し見ます。
購買への受け渡しは、人の確かめが済んだ案だけにします。 仕入先への発注は、これまでどおり購買が行います。見込みの数字が、そのまま発注書になる経路は作りません。
02今回想定するシステム構成
生産計画のCSV(生産管理システムから出力) │ 担当者が「生産計画」シートに貼る ▼【トリガー】毎週月曜の時間主導型トリガー/メニューからの手動実行 Google Apps Script ├──▶ 原単位表と掛け合わせ、資材ごと・週ごとの理論の使用量 ├──▶ 過去6か月の出庫実績と比べ、資材ごとの補正係数 ▼ Gemini API ── 計画変更の連絡を読み、影響する資材と変化の種類を返す ▼ Google Apps Script ── 在庫・発注残・調達期間・最小発注単位・棚の上限で │ 発注の期限日と量を決める ▼ 「発注の案」シート(品目ごとの期限日・量・確かめの印) ▼ 【生産管理の担当者が印の付いた品目を確かめる】 ▼ 購買が仕入先へ発注
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Python |
| 生成AI | Gemini API(計画変更の連絡から影響する資材を拾う) | Claude API、OpenAI API |
| 集計 | Google スプレッドシート(生産計画・原単位表・在庫表・発注一覧) | 生産管理システムの帳票 |
| 保管 | Google ドライブ(生産計画のCSVと発注の案の控え) | 社内のファイルサーバー |
新しく足すのは、資材マスタの4つの列と、計画変更の連絡を集めるシートです。 資材マスタに調達期間、最小の発注単位、棚に置ける上限、安全日数の列を足します。いずれも購買や倉庫の担当者が知っている数字ですが、表になっていないことが多く、ここを埋めるのが最初の準備作業です。
計算はすべて Apps Script で行います。 原単位の掛け算、補正係数、在庫が割る日、期限日、丸めは、どれも決まった式で書けます。生成AIに数字を出させないことで、同じ入力から毎回同じ答えが出ます。 発注量に説明が要るとき、どの式でその数字になったかを示せます。
Apps Script の上限には気をつけます。 公式の割り当ての表では、1回の実行は6分まで、トリガーで動く実行の合計は1日あたり Google Workspace のアカウントで6時間、一般のアカウントで90分です。160品目の計算はスプレッドシートの読み書きをまとめれば数十秒で終わりますが、1品目ごとにセルを読み書きすると6分を超えます(第7章)。
生成AIは Gemini API を、Apps Script の UrlFetchApp から呼びます。 公式のページでは、構造化出力は /v1beta/interactions に response_format を付けて、mime_type に application/json、schema に JSON スキーマを渡す形で示されています。
03どうやって実装するのか
処理の起点を決める
毎週月曜の朝に、Apps Script の時間主導型トリガーで動かします。 公式のページでは、時間主導型のトリガーは毎分から月1回までの間隔で設定でき、実行の時刻はわずかにずれることがある(9時と決めても9時台のどこかで動く)とされています。発注の案は朝のうちに見られれば足りるので、ずれは問題になりません。
月に1回ではなく、毎週動かすのには理由があります。 生産計画は月の途中で週に1〜2回変わり、印刷の入った段ボールの3〜4週間という調達期間は、月1回の見直しでは間に合わない変化を生みます。 毎週動かせば、計画が増えた週のうちに期限日が前に出たことが分かります。
動かす前に、生産計画のシートが貼り直されているかを確かめます。 生産計画のシートの更新日時が前回の実行より古ければ、計算はせずに担当者へ「計画が更新されていません」と知らせます。古い計画で発注の案を出すと、見た目は正しい案が、ずれた数字のまま購買に渡ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 生産計画 | 製品コード、生産日、計画数量(ケース) | 生産管理システムのCSV |
| 生産実績 | 製品コード、生産日、実績数量 | 生産管理システムのCSV(過去6か月) |
| 原単位表 | 製品コード、資材コード、1ケースあたりの使用数、有効期間 | 原単位表のシート |
| 資材の出庫実績 | 資材コード、出庫日、出庫数、出庫先のライン | 資材の在庫表の出庫記録 |
| 在庫と発注残 | 資材コード、現在庫、発注残の数量と納期 | 在庫表と購買の発注一覧 |
| 資材マスタ | 資材コード、名称、仕入先、調達期間、最小の発注単位、棚の上限、安全日数、版の番号 | 資材マスタのシート |
| 計画変更の連絡 | 日付、送り主、本文(新製品・販促・荷姿・版替えの連絡) | 計画変更の連絡のシート |
質を決めるのは、原単位表の有効期間の列です。 荷姿が変わって1ケースの入数が12個から10個になると、同じ製品でも段ボールの使用数が変わります。原単位表に有効期間が無いと、過去の補正係数を古い原単位で計算してしまい、係数そのものが狂います。
計画変更の連絡のシートは、今回新しく作ります。 営業・品質保証・生産管理が、計画に影響する連絡を受けたら1行ずつ貼る場所です。メールの受信箱をそのまま読ませる形にしないのは、関係の無いメールが大半で、取引先の情報も混ざるためです。貼る人がいることで、AIに渡す範囲が決まります。
データの取得方法を決める
Apps Script は、生産計画・原単位表・在庫表・発注一覧・資材マスタのシートを getValues() でまとめて読みます。公式のページでは、getValues() は範囲の値を二次元の配列で返し、setValues() は範囲と同じ大きさの二次元の配列を書き込むとされています。読み書きはシートごとに1回ずつにして、計算は配列の上で行います。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 翌月と翌々月の生産計画 | 生産計画のシート | 資材ごと・週ごとの理論の使用量 |
| 過去6か月の生産実績 | 生産実績のシート | 補正係数の分母(理論の使用量) |
| 過去6か月の出庫実績 | 資材の出庫記録 | 補正係数の分子(実際の使用量) |
| 現在庫と発注残 | 在庫表と発注一覧 | 在庫が安全日数を割る日 |
| 調達期間・最小発注単位・棚の上限 | 資材マスタ | 発注の期限日と量の丸め |
| 直近8週の計画変更の連絡 | 計画変更の連絡のシート | 生成AIに渡す本文 |
翌々月の計画まで読むのは、調達期間の長い資材のためです。 印刷の入った段ボールは、翌月の分を今週発注しても間に合わないことがあり、翌々月の初めに使う分の期限日が、今月のうちに来ます。 翌々月の計画がまだ仮のものでも、仮のまま使い、案の側に「仮の計画に基づく」と印を付けます。
生成AIは UrlFetchApp.fetch で呼び、muteHttpExceptions を true にします。 公式のページでは、こうすると失敗の応答でも例外を投げずに中身を返すとされ、エラーの中身を記録に残せます。
AIへ渡す前に整形する
- 計画の単位をそろえる … 生産計画がケースと個の混在で出る製品は、原単位表の単位(ケース)にそろえます
- 原単位表の有効期間で引く … 生産日ごとに、その日に有効な原単位を使います。荷姿の変更の前後で別の行になります
- 共用の資材をまとめる … 無地の段ボールやテープのように複数の製品が使う資材は、製品ごとの使用量を資材コードで足し上げます
- 出庫実績の外れ値を除く … 棚卸の差の調整や、別の倉庫への移動として記録された出庫は、補正係数の計算から外します
- 週ごとに分ける … 生産日をもとに、使用量を週ごとに分けます。在庫が割る日を週の単位で見るためです
- 連絡の本文を絞る … 計画変更の連絡のうち、直近8週の分だけを渡します。署名や引用の部分は落とします
- 資材の一覧を添える … 生成AIには、資材コードと名称、版の番号の一覧だけを添えます。在庫や仕入先は渡しません
4番目を省くと、補正係数が意味の無い数字になります。 帳簿を合わせるための調整の出庫を使用量として数えると、その資材は「いつも2倍使う」ことになり、翌月に2倍発注されます。 出庫先のラインの列が空の行を除く、といった決まりで外します。
補正係数の式は、単純にしておきます。 過去6か月の「実際の出庫量 ÷ 理論の使用量」を資材ごとに出し、1.00を下回る資材は1.00として扱います。 下回るのは、原単位表の誤りか出庫の記録漏れのどちらかで、見込みを減らす理由にはしません。こうした資材には「原単位を確かめる」の印を付けます。
AIに処理させる
させるのは、計画変更の連絡を読み、どの資材に、どの種類の変化が、いつから起きるかを書き出すことだけです。 使用量の計算も、補正係数も、期限日も、Apps Script の式で出します。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 影響する資材の特定 | 連絡に書かれた製品名・資材名を、資材の一覧のコードに当てる | 当てられなければ material_unknown |
| 変化の種類の分類 | 版替え/新製品/販促の限定品/荷姿の変更/生産の中止/その他 | 決められなければ other |
| 時期の書き写し | 連絡に書かれた切替日・発売日・開始日 | 書かれていなければ date_unknown |
| 根拠の書き写し | 判断のもとにした連絡の一文 | 必ず写す |
| 予測が外れた理由の候補 | 補正係数が前月から大きく動いた資材について、連絡の中に関係しそうな記述があるか | 無ければ no_related_note |
1行目と2行目が、AIを使う理由です。 連絡は「来月15日からAシリーズの表示が新しくなります」のように製品の呼び名で書かれ、資材コードはありません。 呼び名から段ボールとラベルを当てるのは、規則では書きにくい作業です。
| させないこと | 理由 |
|---|---|
| 使用量や発注量の数字を出す | 計算は式で行う。同じ入力から同じ答えを出すため |
| 補正係数を直す | 過去の実績から測った値をそのまま使う |
| 連絡に無い時期を補う | 「来月から」としか書かれていない切替を、1日からと決めない |
| 版替えの旧版を発注しない、と決める | 旧版をいつまで使うかは品質保証と生産管理が決める |
| 仕入先への連絡 | 購買の仕事。この構成は案までを出す |
3行目がいちばん起きやすい失敗です。 「来月から」を1日と書くと、Apps Script はその日から新版の使用量を数え、旧版の資材が半月分足りなくなります。 書かれていなければ date_unknown にして、担当者が送り主に確かめます。
指示内容を固定する
あなたは食品工場の生産管理の担当者で、包装資材の発注の案を作る前に、
計画変更の連絡を読んで、影響する資材を洗い出す立場です。
渡された連絡と資材の一覧だけを見て書き出してください。推測で埋めないでください。
【書き出すこと】
連絡1件ごとに、影響する資材ごとに次を書いてください。
- material_code:資材の一覧のコード。当てられなければ空にし、
status を material_unknown にする
- change_type:version_change(版替え)/new_product(新製品)/
promotion(販促の限定品)/pack_change(荷姿の変更)/
discontinue(生産の中止)/other のどれか
- effective_date:連絡に書かれた切替日・開始日。YYYY-MM-DD で書く
- evidence:判断のもとにした連絡の一文を、そのまま写す
【厳守事項】
- 数量や使用量を書かないでください。連絡に数量が書かれていても、
quantity_note に原文のまま写すだけにしてください。計算しないでください。
- 日付が「来月から」「月の半ばごろ」としか書かれていない場合は、
effective_date を空にし、status を date_unknown にしてください。
1日や15日に決めないでください。
- 製品名から資材を当てるときは、資材の一覧の名称に書かれた製品名と
一致するものだけを当ててください。似た名前の資材に寄せないでください。
- 1つの連絡が複数の資材に関わる場合は、資材ごとに1行にしてください。
- 旧版の資材をいつまで使うか、発注を止めるべきかは書かないでください。
- 包装資材に関係の無い連絡は、change_type を other、
status を not_related にしてください。
【予測が外れた資材】{deviated_materials}
上の資材について、連絡の中に関係しそうな記述があれば related_notes に
evidence を写してください。無ければ no_related_note としてください。
【資材の一覧】{material_list}
【計画変更の連絡】{notes}
「数量を書かない」を最初に置いているのは、連絡に数量が書かれていることが多いためです。 「販促品を5,000ケース追加」と書かれていると、AIは段ボールの枚数まで計算して返そうとします。原単位を知らないまま計算した数字は、式の答えと食い違い、どちらを信じるかで担当者が迷います。 数量は原文のまま写させ、計算は Apps Script に任せます。
出力形式を固定する
次の形のJSONで受け取ります。 Gemini API の構造化出力(response_format に mime_type: application/json と schema を渡す方式)を使い、形を固定します。
{
"changes": [
{
"note_id": "",
"material_code": "",
"change_type": "version_change | new_product | promotion | pack_change | discontinue | other",
"effective_date": "",
"quantity_note": "",
"status": "ok | material_unknown | date_unknown | not_related",
"evidence": ""
}
],
"deviations": [
{ "material_code": "", "related_notes": [""], "status": "found | no_related_note" }
]
}
1つ目の理由は、Apps Script がそのまま使える形で受け取れることです。 material_code と change_type と effective_date がそろっていれば、版替えの日より後の旧版の使用量を0にし、新版の使用量をその日から数える、という処理を式で書けます。
2つ目は、印の付け方を規則で持てることです。 発注の案の各行には、次の印を付けます。
| 条件 | 印 |
|---|---|
| 発注の期限日が今日から5営業日以内 | due_soon |
| 期限日がすでに過ぎている(今発注しても間に合わない) | late |
| 版替え・生産の中止の連絡がある資材 | version |
| 新製品・荷姿の変更・販促の連絡がある資材 | plan_change |
| 補正係数が前月から0.1以上動いた | factor_moved |
| 補正係数が1.00を下回った(原単位を確かめる) | check_bom |
| 丸めた発注量が棚の上限を超える | space |
連絡が material_unknown か date_unknown | check_note |
late は他の印より先に出します。 今発注しても間に合わない資材は、仕入先に納期を早められるか相談するか、生産の順番を入れ替えるかを、その日のうちに決める必要があります。 発注の案のシートでは、late の行を一番上に並べます。
公式のページでは、出力は構文として正しいJSONになるが、値の正しさはアプリケーションの側で確かめる必要があるとされています。material_code が資材の一覧に無いコードだったり、effective_date が日付として読めなかったりしたときは、その行を check_note にして、Apps Script の計算には使いません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 生産計画・生産実績 | 担当者がCSVをシートに貼る | 翌月・翌々月の計画と過去6か月の実績 |
| 原単位表・資材マスタ | getValues() で読む | 1ケースあたりの使用数、調達期間、最小発注単位、棚の上限 |
| 在庫表・発注一覧 | getValues() で読む | 現在庫、発注残の数量と納期、出庫実績 |
| Gemini API | UrlFetchApp.fetch で呼ぶ | 計画変更の連絡から、影響する資材と変化の種類 |
| 発注の案のシート | setValues() で書く | 品目ごとの期限日・量・印 |
| 通知 | 担当者へのメール | late と due_soon の件数 |
発注一覧と在庫表には、この構成から書き込みません。 書き込み先は発注の案のシートだけで、購買の発注一覧に行を足すのは、確かめが済んだ案を見た購買の担当者です。 見込みの誤りが、そのまま発注残として在庫の計算に入ることはありません。
人が確認する
生産管理の担当者が見るのは、印の付いた品目だけです。 印の無い品目は、一覧で品目数と発注の合計金額の目安を流し見ます。
lateを先に見る … 購買と相談し、仕入先に納期を相談するか、生産の順番を入れ替えるかを決めますversionを見る … 旧版をいつまで使い、新版をいつから使うかを品質保証と確かめます。旧版の発注量は、切替日までの使用量に絞られているかを見ますplan_changeとcheck_noteを見る … 連絡のevidenceを読み、日付が分からないものは送り主に確かめますfactor_movedとcheck_bomを見る … 補正係数が動いた理由を、出庫の記録と原単位表で確かめます。原単位表の誤りなら、表のほうを直しますspaceを見る … 棚の上限を超える資材は、発注を2回に分けるか、仕入先に分納を頼みます- 案を確定する … 確かめた結果を案のシートに書き、購買へ渡します
目標は、160品目をならして1品目9分です。 印の無い品目は数十秒、late や version の付いた品目は他の部署とのやり取りで20〜30分かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 生産計画のシートが更新されていない | 計算せずに担当者へ知らせる。古い計画で案を出さない |
| 原単位表に無い製品が計画にある | 新製品の可能性。plan_change を付けて担当者へ。使用量を0で計算しない |
| 補正係数を出す実績が3か月に満たない資材 | 補正係数を1.00にし、factor_moved と同じ扱いで担当者に見せる |
| 出庫の記録が抜けている月がある | その月を補正係数の計算から外し、外したことを記録する |
| Gemini API が応答しない・エラーを返す | 連絡の読み取りなしで計算だけ行い、全品目に「連絡未確認」と出す |
| 応答のJSONが資材の一覧に無いコードを含む | その行を check_note にし、計算に使わない |
| 6分の実行時間を超えそうになる | 資材の区分(段ボール・ラベル・その他)で分けて続きを次の実行に回す |
| 発注残の納期が過ぎているのに入荷していない | 発注残として数えず、late と同じ扱いで購買に確かめてもらう |
いちばん上と2行目が、この構成の数字を守る行です。 計画が古いことも、原単位表に無い製品があることも、計算は止まらずに進んでしまい、もっともらしい数字が出ます。 止めるか、印を付けるかを決めておかないと、気づくのは包装ラインで箱が足りなくなったときです。
記録を残す
- 実行の日時、使った生産計画の版(貼った日時と貼った担当者)
- 資材ごとの理論の使用量、補正係数、見込んだ使用量、期限日、発注量の案、付いた印
- Gemini API に渡した連絡の範囲と、応答のJSONの全文
- 担当者が案を直した記録 … どの品目を、いくつからいくつに、なぜ直したか
- 購買が実際に発注した数量と日付(発注一覧から月末に写す)
- 翌月の実際の出庫量と、見込んだ使用量の差
4つ目と最後の行が、この構成を育てる材料です。 担当者がいつも同じ資材の量を増やしているなら、補正係数に入っていない使い方があります。どの資材の見込みが外れやすいかが、勘ではなく記録として残ります。
04実装レベルの3段階
半自動化で、1品目30分が15分程度になります。 計画の集計と掛け算、補正は自動になりますが、計画変更の連絡の見返しと、期限日・量の丸めは手で行う作業として残ります。 本格構成で9分になり、この段階が本記事の想定です。 差が大きいのは、担当者が見るのが印の付いた品目だけになり、連絡の見返しが毎週の実行に入るためです。 段階を飛ばさないでください。 半自動化を1〜2か月回すと、補正係数が安定しない資材と、出庫の記録の決まりが守られていない資材が分かります。
05工数削減シミュレーション
導入後 160件 × 9分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 食品・日用品・化粧品などを製造し、製品ごとに段ボール・ラベル・個装箱・緩衝材・テープなど百数十品目の包装資材を使う工場。生産計画と資材の在庫・発注の記録をGoogleスプレッドシートで扱える場合。包装資材の発注量を、生産管理の決まった担当者の経験と手計算で決めていて、欠品による生産の停止や、版替えで使えなくなった資材の廃棄が毎年出ている場合。
- 包装資材の品目が数十品目で、担当者が全品目の在庫を把握できている場合。資材メーカーが工場の在庫を見て補充する契約(預託在庫・VMI)になっていて、自社で発注量を決めていない場合。生産管理システムに所要量計算(MRP)があり、包装資材まで部品表に載せて回せている場合。なお、仕入先をどこにするか、版替えの時期をいつにするかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の生産計画と、先月の包装資材の出庫実績を用意する
- 原単位表から、使う製品の多い資材を10品目、製品専用のラベルを10品目選ぶ
- スプレッドシートの式で、先月の計画 × 原単位から理論の使用量を出し、実際の出庫量と並べる
- 過去6か月分で同じことを行い、資材ごとに「実際 ÷ 理論」を出す
- 先月届いた計画変更のメールを5〜10通、手元のAIサービスに貼り、「影響する包装資材と変化の種類、切替日を書き出してください。数量は計算しないでください。日付が書かれていなければ空にしてください」と指示する
3番目と4番目は、AIを使わずにできます。 ここで分かるのは、原単位表が実際の使い方をどれだけ表しているかです。この差が資材ごとに安定していれば、補正係数で見込みが立ちます。
| 出てきた内容 | 判断 |
|---|---|
| 実際 ÷ 理論が、資材ごとに毎月ほぼ同じ値になる | Apps Script で計算と期限日を組む段階に進む |
| 1.00を大きく下回る資材がある | 原単位表か出庫の記録の誤り。表を直すのが先 |
| 月によって大きくばらつく資材がある | 試作や手直しの使用が混ざっている。出庫先の記録を分ける |
| AIが連絡から影響する資材を当てられた | 計画変更の連絡のシートを作る段階に進む |
| AIが日付を補ったり数量を計算したりした | 指示の書き方で直る。構成は有効 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 補正係数が2倍・3倍になる資材が出る | 棚卸の調整や倉庫間の移動を出庫から外す。 出庫先のラインが空の行を除く |
| 荷姿の変更の前後で係数が狂う | 原単位表に有効期間を持たせ、生産日ごとに引く |
| AIが連絡から使用量を計算して返す | 数量は原文のまま写させ、計算は式で行う |
| 「来月から」を1日とされる | 日付が無ければ空にさせ、担当者が確かめる |
| 似た名前の資材に当てられる | 資材の一覧の名称と一致するものだけを当てさせる |
| 実行が6分で止まる | シートの読み書きを1回ずつにし、計算は配列の上で行う |
| 古い計画のまま案が出る | 計画のシートの更新日時を見て、古ければ止める |
| 案がそのまま発注になる | 書き込み先は案のシートだけ。発注一覧には人が足す |
| 棚に入りきらない量が届く | 資材マスタに棚の上限を持たせ、space の印を付ける |
| 版替えの旧版を作りすぎる | 切替日までの使用量に絞り、version の印で品質保証と確かめる |
上の2行が、この構成の失敗のほとんどです。 どちらもAIではなく表と記録の問題で、記録の乱れがそのまま見込みに入ります。記録の決まりを先に直すほうが、計算を工夫するより効きます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 製品ごとの生産計画と実績、包装資材の在庫と発注残、仕入先の名称と調達期間、そして新製品の発売日や販促の計画、得意先の荷姿の変更です。個人情報はほとんど含みませんが、新製品と販促の予定は、発表前の社外秘であることが多い情報です。
- 生成AIに渡す範囲を、計画変更の連絡と資材の一覧に限る … 生産計画の数量、在庫、仕入先、単価は渡しません。計算は Apps Script の側で行い、AIには影響する資材を拾わせるだけにします
- 連絡のシートに貼る範囲を決めておく … 得意先の担当者名やメールアドレス、取引条件は貼らないように、貼る人の決まりを作ります
- 生成AIの利用規約とデータの扱いを確かめる … 発表前の新製品の情報を渡す前に、利用する契約の条件で入力がどう扱われるかと、自社の情報管理の決まりを確かめます
- 発注を自動で行わない … 案は人が確かめてから購買に渡します。見込みの誤りがそのまま発注になると、資材の過不足は数週間後に包装ラインで初めて分かります
- APIキーをスクリプトに書き込まない … Apps Script のスクリプトのプロパティに置き、編集できる人を生産管理の担当者に絞ります
- 発注の案のシートの共有範囲を絞る … 新製品の資材の量と時期が並ぶため、生産管理・購買・品質保証の担当者だけが見られるようにします
誤りが起きた場合のリスクは、資材が足りずに包装ラインが止まることと、作りすぎた資材を廃棄することの2つです。 前者は計画の変化に気づくのが遅れると起き、後者は版替えを見落とすと起きます。どちらも、毎週動かすことと、late と version を先に人に見せることで、設計の側から防ぎます。
10まず何から始めるか
1週目:資材マスタと原単位表を整える
資材マスタに調達期間、最小の発注単位、棚の上限、安全日数の列を足し、購買と倉庫の担当者に埋めてもらいます。原単位表には有効期間の列を足し、この1年の荷姿の変更を入れます。全220品目を一度に埋める必要はありません。調達期間の長い印刷の入った段ボールとラベルから埋めます。
2週目:補正係数を手で出してみる
過去6か月の生産実績と出庫実績で、20品目について「実際 ÷ 理論」をスプレッドシートの式で出します。1.00を下回る資材と、月ごとに大きくばらつく資材を洗い出し、原単位表と出庫の記録の誤りを直します。
3週目:計画変更の連絡のシートを作る
営業・品質保証・生産管理が、計画に影響する連絡を貼るシートを作り、貼る決まりを決めます。先月分の連絡を手元のAIサービスに貼り、影響する資材と切替日を書き出させて、担当者の記憶と比べます。
4週目:Apps Script で見込みと期限日を出す
補正係数・見込みの使用量・在庫が割る日・期限日を Apps Script で出し、案のシートに書くところまで作ります。この時点では担当者がこれまでどおり手計算もして、案の数字と比べます。
2か月目: Gemini API で連絡を読む部分と印を足し、印の付いた品目だけを見る運用を始めます。3か月目以降: 見込みと実際の出庫量の差を毎月記録し、1品目30分が何分になったかを実測します。check_bom がほとんど出なくなり、担当者が休んだ週にも同じ案が出るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 時間主導型のトリガーが毎分から月1回までの間隔で設定でき、実行の時刻がわずかにずれることがあること。トリガーは作成したアカウントで動くこと | Apps Script: Installable triggers | 2026-10-13 |
| 1回の実行が6分まで、トリガーの合計の実行時間が1日あたり一般のアカウントで90分、Google Workspace のアカウントで6時間であること | Apps Script: Quotas for Google Services | 2026-10-13 |
UrlFetchApp.fetch で method・contentType・payload・headers を指定でき、muteHttpExceptions を true にすると失敗の応答でも例外を投げずに中身を返すこと | Apps Script: Class UrlFetchApp | 2026-10-13 |
getValues() が範囲の値を二次元の配列で返し、setValues() が範囲と同じ大きさの配列を書き込むこと | Apps Script: Class Range | 2026-10-13 |
構造化出力が /v1beta/interactions に response_format(mime_type: application/json と schema)を付けて指定すること。出力は構文として正しいJSONになるが、値の正しさはアプリケーションの側で確かめる必要があること | Gemini API: Structured output | 2026-10-13 |
どの仕入先に発注するか、版替えの旧版をいつまで使うか、安全日数を何日にするかは、自社の生産管理・購買・品質保証の決まりに沿って決めてください。 本記事は各製品の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1398)についてのご相談はこちらから。
