Media > AI活用ユースケース > 生産 > 飲食店の毎日の廃棄記録と仕込みの記録から品目ごとの廃棄を集計し、翌月の仕込み量の見直し案を店長へ返す

飲食店の毎日の廃棄記録と仕込みの記録から品目ごとの廃棄を集計し、翌月の仕込み量の見直し案を店長へ返す

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

店舗が毎日つける廃棄記録と仕込みの記録を月末にまとめ、品目ごと・曜日ごとの廃棄の量と率を集計します。使った量の実績から翌月の曜日ごとの仕込み量の目安を計算し、今の仕込み表との差を見直し案にして店長へ返します。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate/Python
対象業界
介護/宿泊/飲食
対象部門
生産/購買
対象業務
比較検討/集計・分析
主な課題
データ分析に時間がかかる/判断に時間がかかる/属人化している
AIで行う処理
予測
主な効果
判断支援/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
24h/月
AI導入後
8h/月
想定削減
67%
年間削減
192h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 店舗が毎日、仕込みの記録と廃棄の記録をフォームで出す
  2. 月初に、本部の担当が店舗のタブを開き、品目ごとに前月の仕込み量と廃棄量を合計する
  3. 廃棄の理由の欄とメモを読み、仕込み過ぎによるものを拾う
  4. 曜日ごとに廃棄が多い日を見つけ、仕込み表の量と見比べる
  5. 減らす量を考え、店長へのメールに「水曜のキャベツは2.5kgにしてはどうか」と書く
  6. 店長が返事をし、仕込み表を直すかどうかを決める
  7. 本部の担当が、直した仕込み表を確かめる
導入後(After)
  1. 人店舗が毎日、仕込みの記録と廃棄の記録をフォームで出す(今までどおり)
  2. 自動毎月1日の朝、スクリプトが前月分の記録を店舗・品目・日付ごとにそろえる
  3. 自動記録の無い日に印を付け、単位を品目マスタの単位にそろえる
  4. 自動理由が「その他」の廃棄と、メモの付いた廃棄を Gemini API に送り、理由を分けさせる
  5. 自動品目ごと・曜日ごとに、仕込み量・廃棄量・使った量・廃棄率を集計する
  6. 自動直近8週の同じ曜日の使った量から、翌月の曜日ごとの仕込み量の目安を計算する
  7. 自動目安と今の仕込み表の差が大きい品目を店舗ごとに選び、Gemini API に見直し案の文面を作らせる
  8. 自動店舗ごとの見直し案を一覧のシートに書き、店長宛てのメールの下書きを作る
  9. 人本部の担当が見直し案を読み、送ってよいものを店長へ送る
  10. 人店長が、仕込み表を直すかを決め、直した量を仕込み表に書く
各工程の詳しい説明を読む
  1. 店舗が毎日、仕込みの記録と廃棄の記録をフォームで出す
  2. 月初に、本部の担当が店舗のタブを開き、品目ごとに前月の仕込み量と廃棄量を合計する
  3. 廃棄の理由の欄とメモを読み、仕込み過ぎによるものを拾う
  4. 曜日ごとに廃棄が多い日を見つけ、仕込み表の量と見比べる
  5. 減らす量を考え、店長へのメールに「水曜のキャベツは2.5kgにしてはどうか」と書く
  6. 店長が返事をし、仕込み表を直すかどうかを決める
  7. 本部の担当が、直した仕込み表を確かめる

(a)16店舗のうち数店舗しか見られない。 1店舗30品目を集計して曜日ごとに見比べると、1店舗あたり1時間半ほどかかります。月初の他の業務と重なると、廃棄の金額が大きい数店舗だけを見て終わります。 残りの店舗の仕込み表は、何か月も変わりません。

(b)理由を分けずに数えてしまう。 冷蔵庫の不調で捨てた日や、団体の予約が直前に取り消された日の廃棄も、合計すれば同じ1kgです。メモを読み飛ばして合計すると、その品目は「仕込み過ぎ」に見えます。 減らす案を出して、翌月に足りなくなった店舗があります。

(c)記録の無い日を「廃棄ゼロ」と数える。 閉店後の記録が忘れられた日は、廃棄の行がありません。合計すると、記録を忘れた日の多い店舗ほど廃棄が少なく見えます。 記録の無い日と、廃棄が本当にゼロの日の区別がついていません。

(d)見直しの量が担当者の勘で決まる。 「水曜は多いから2.5kgに」の2.5は、担当者がその場で決めています。店長から「なぜ2.5なのか」と聞かれても答えられず、話が進みません。

  1. 【人】 店舗が毎日、仕込みの記録と廃棄の記録をフォームで出す(今までどおり)
  2. 【自動】 毎月1日の朝、スクリプトが前月分の記録を店舗・品目・日付ごとにそろえる
  3. 【自動】 記録の無い日に印を付け、単位を品目マスタの単位にそろえる
  4. 【自動】 理由が「その他」の廃棄と、メモの付いた廃棄を Gemini API に送り、理由を分けさせる
  5. 【自動】 品目ごと・曜日ごとに、仕込み量・廃棄量・使った量・廃棄率を集計する
  6. 【自動】 直近8週の同じ曜日の使った量から、翌月の曜日ごとの仕込み量の目安を計算する
  7. 【自動】 目安と今の仕込み表の差が大きい品目を店舗ごとに選び、Gemini API に見直し案の文面を作らせる
  8. 【自動】 店舗ごとの見直し案を一覧のシートに書き、店長宛てのメールの下書きを作る
  9. 【人】 本部の担当が見直し案を読み、送ってよいものを店長へ送る
  10. 【人】 店長が、仕込み表を直すかを決め、直した量を仕込み表に書く

9番目と10番目が、人の仕事として残る部分です。 本部は案を確かめて送り、店長が決めます。目安はあくまで過去8週の実績からの計算で、翌月の宴会の予約や新メニューの事情は店長しか知りません。

6番目を式に置いているのは、店長に「なぜこの量か」を説明できるようにするためです。 「過去8週の水曜に使った量のうち、多いほうから2番目の量」と書けば、店長は自分の記憶と照らせます。AIが出した量では、その説明ができません。

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

構成図
店舗のタブレット(Google フォーム:仕込みの記録・廃棄の記録)
   ▼ 記録のスプレッドシート(店舗ごとのタブ)
【トリガー】時間主導型(毎月1日の朝)
Google Apps Script
   ├──▶ 前月分の取り出し、記録の無い日の印、単位の換算
   ▼
Gemini API(有料の枠、構造化出力)
   │   ① 廃棄の理由の読み分け(その他・メモ付きの廃棄)
   ▼
Google Apps Script ── 品目×曜日の集計と、翌月の仕込み量の目安の計算
   ▼
Gemini API ── 店舗ごとの見直し案の文面(差の大きい品目だけ)
   ▼
Google Apps Script ── 一覧のシートへ書き出し、店長宛てメールの下書き
   ▼
【本部が確かめて送り、店長が仕込み表を直すかを決める】
役割想定する製品代替候補
実行環境Google Apps ScriptPower Automate、Make、Python
生成AIGemini API(有料の枠、構造化出力)Claude API、OpenAI API
シートGoogle スプレッドシート(記録・品目マスタ・仕込み表・見直し案の一覧)Microsoft 365 のブック
メールGmail(店長宛ての見直し案の下書き)Outlook

新しく足すのは、スクリプトと Gemini API の契約だけです。 フォームも記録のスプレッドシートも、仕込み表も今あるものを使います。スクリプトは仕込み表に書き込みません。 書き込むのは見直し案の一覧のシートだけで、仕込み表を直すのは店長です。

土台になるのは、Google Apps Script の時間主導型のトリガーです。 毎分から毎月までの間隔で関数を動かせ、インストール型トリガーは作成した人のアカウントで実行されます。 記録のスプレッドシートと仕込み表を読める本部の担当者のアカウントで作ります。

スクリプトの実行時間には上限があります。 1回の実行は6分まで、トリガーの合計の実行時間は Google Workspace のアカウントで1日6時間まで、外部へのURLの呼び出しは1日100,000回までとされています。16店舗分の集計と2種類の Gemini API の呼び出しを1回に詰めると6分を超えるので、店舗ごとに区切って続きから再開します。

Gemini API は有料の枠で使います。 扱うのは食材の記録で個人の情報はほとんど含みませんが、店舗ごとの廃棄の量は社内の経営の数字です。 規約では、有料のサービスでは送ったプロンプトや応答を製品の改善に使わないとされています。

構造化出力は、いまの公式の書き方に合わせます。 /v1beta/interactions に response_format を付け、mime_type を application/json、schema にJSONスキーマを入れます。理由の区分は enum で列挙し、決めた値の中から選ばせます。値の正しさはアプリケーションで確かめるよう公式の説明にもあるので、返ってきた数値はスクリプトの計算と照らします。

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

Step1

処理の起点を決める

時間主導型のトリガーを、毎月1日の朝6時台に1つ置きます。 前月の最終日の廃棄の記録は閉店後に出されるので、深夜0時の直後ではなく、朝まで待ちます。 遅く出された記録があっても、6時台なら入っています。

処理は店舗ごとに区切ります。 1店舗分の取り出し・理由の読み分け・集計・目安の計算・見直し案の文面までを1まとまりにし、どの店舗まで終わったかをスクリプト プロパティに残します。 1回の実行が5分を過ぎたら区切り、同じ朝の15分後と30分後に置いた続きのトリガーで、残りの店舗から再開します。

全店舗が終わったら、本部の担当に1通のメールで知らせます。 「16店舗中16店舗の見直し案ができた。記録の無い日が多い店舗は2つ」のように、終わった数と、記録に問題のある店舗の数だけを書きます。 中身は一覧のシートで見ます。

月の途中でも、手で動かせるようにします。 新メニューの導入の後などに、本部が特定の店舗だけ見直したいときがあるからです。手で動かすときは、対象の店舗と期間をシートに書いてから実行します。

Step2

入力データを集める

データ中身取得元
仕込みの記録日付、店舗、品目、仕込んだ量、単位記録のスプレッドシート(フォームの回答)
廃棄の記録日付、店舗、品目、廃棄した量、単位、理由(5区分)、メモ同上
品目マスタ品目コード、品目名、基本の単位、単位の換算(1バット=何kgなど)、日持ちの日数品目マスタのシート
仕込み表店舗、品目、曜日ごとの仕込み量仕込み表のシート
営業の記録店舗の休業日、貸切の日、臨時の営業時間の変更営業カレンダーのシート
翌月の予定祝日、店舗ごとの大きな予約や催事(店長が書く)営業カレンダーのシート

AIに渡すのは2種類です。 1回目の呼び出しには、理由が「その他」の廃棄とメモの付いた廃棄の行を、品目名と量とメモだけにして渡します。2回目の呼び出しには、スクリプトが計算し終えた集計と目安の数字と、翌月の予定を渡します。 生の記録をすべて渡すことはしません。

営業の記録が、目安の質を決めます。 貸切の日は仕込みも廃棄もふだんと違い、8週の中に貸切の水曜が1日混ざると、水曜の目安が大きく振れます。 営業カレンダーに貸切と休業の日が書かれていれば、その日を計算から外せます。

Step3

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

記録のスプレッドシートは、店舗ごとのタブの範囲をまとめて読みます。日付で前月分と、目安の計算に使う直近8週分を絞り込みます。 8週は前月より長いので、前々月の終わりの分も読みます。

取るものどこから何に使うか
直近8週の仕込みと廃棄の記録店舗のタブ使った量と廃棄率、目安の計算
品目の単位と換算品目マスタ単位をそろえる
今の仕込み表仕込み表のシート目安との差
休業・貸切の日営業カレンダー計算から外す日
翌月の祝日と大きな予約営業カレンダー見直し案の注意書き
前月までの見直し案と、店長の返事見直し案の一覧のシート先月の案が採られたか

前月の見直し案と店長の返事も読みます。 先月「減らす」と返した品目が、今月どうなったかを見直し案に書けるからです。店長が採らなかった案を、毎月同じ形で繰り返し送ることも避けられます。

Gemini API の鍵はスクリプト プロパティに置き、UrlFetchApp で呼びます。 muteHttpExceptions を true にして、失敗の状態コードでも応答を受け取り、送り直すかを決めます。

Step4

AIへ渡す前に整形する

  1. 単位の換算 … 「バット」「個」「人前」で書かれた量を、品目マスタの換算で基本の単位にそろえます。換算の無い単位は「換算不能」として、その行を集計から外して数えます
  2. 記録の無い日の印 … 営業日なのに仕込みの記録も廃棄の記録も無い日に「記録なし」の印を付けます。廃棄ゼロとは扱いません
  3. 廃棄の記録だけが無い日 … 仕込みの記録はあるのに廃棄の記録が無い日は「廃棄の記録なし」とし、その日は使った量の計算から外します
  4. 休業・貸切の日の除外 … 営業カレンダーで休業と貸切の日を外します
  5. 使った量の計算 … 日ごとに、仕込んだ量から「仕込み過ぎ」と「期限切れ」の廃棄を引きます。調理の失敗と設備の不調の廃棄は、使った量に含めたままにします
  6. 曜日ごとの目安 … 直近8週の同じ曜日の使った量を並べ、多いほうから2番目の量を目安とします。外した日があって4日に満たない曜日は、目安を出しません
  7. 日持ちの考慮 … 日持ちが2日以上の品目は、曜日ごとではなく2日分をまとめて見ます
  8. 差の大きい品目の選択 … 目安と仕込み表の差が仕込み表の15%以上で、前月の廃棄の量が多い品目から、店舗ごとに最大5品目を選びます

5番目で理由を分けるのが、この構成の分かれ目です。 冷蔵庫の不調で捨てた分は、仕込み過ぎではありません。その分まで使った量から引くと、使った量が少なく見え、仕込みを減らしすぎる案になります。 だから「その他」とメモの付いた廃棄は、AIに理由を読み分けさせてから計算します。

6番目の「多いほうから2番目」は、欠品を避ける側に寄せた決め方です。 平均で目安を出すと、8週のうち半分ほどの日に足りなくなります。店長が欠品を嫌って仕込み表を多めにしている理由は、ここにあります。 決め方は本部と店長で話し合い、設定のシートで変えられるようにします。

Step5

AIに処理させる

させるのは2つです。 1つ目は、理由が「その他」の廃棄とメモの付いた廃棄の理由を、決めた区分の中から選び直すこと。2つ目は、スクリプトが選んだ差の大きい品目について、店長への見直し案の文面を書くことです。

させること中身判断できないときの扱い
廃棄の理由の読み分けメモから、仕込み過ぎ/期限切れ/調理の失敗/設備の不調/予約の取消/食べ残し のどれかを選ぶメモから分からなければ unknown
選び直しの根拠区分を決めたメモの語句語句をそのまま写す
見直し案の文面品目ごとに、今の量・目安・差、廃棄の多い曜日、理由の内訳を2〜3行で—
店長に確かめる点翌月の予定と照らして、目安どおりでよいかを問う質問予定が無ければ書かない
先月の案の振り返り先月の案が採られたか、採られた後の廃棄の変化先月の案が無ければ書かない

理由の区分に「予約の取消」を足しているのは、店舗のメモで多い型だからです。 仕込み過ぎに数えると、取消の多かった月の翌月に仕込みを減らす案が出ます。取消は仕込み表の問題ではないので、使った量の計算では仕込み過ぎと分けます。

させないこと理由
目安の量の計算・修正式で出した数字を変えさせない。店長に説明できなくなる
仕込み表の量を決めること店長が決める
入力に無い事情(天気、近隣の催事)の推測確かめようのない理由が案に並ぶ
店舗や店長の評価見直し案の目的と違う
食品の安全に関わる判断(日持ちを延ばすなど)衛生の基準は別に決まっている

いちばん起きやすい失敗は、1行目です。 「水曜の目安2.6kg」と渡しても、AIは「2.5kgに減らすことをお勧めします」と丸めて書くことがあります。2.5という数字はどこからも出てこない数字で、店長に聞かれても説明できません。 文面の中の数字はスクリプトが入れた値と照らし、違えばその文面を作り直します。

Step6

指示内容を固定する

1つ目の指示(理由の読み分け)は次のとおりです。

あなたは飲食チェーンの本部で、店舗の廃棄記録を整理する立場です。
各行のメモを読み、廃棄の理由を次の区分から1つ選んでください。

【区分】
- over_prep ......... 仕込み過ぎ、余った、出なかった
- expired ........... 日持ちの期限を過ぎた
- cooking_error ..... 焦がした、味付けの失敗、落とした
- equipment ......... 冷蔵庫・冷凍庫・機器の不調
- reservation_cancel  予約の取消、団体の人数の減少
- plate_waste ....... お客様の食べ残し
- unknown ........... メモから判断できない

【厳守事項】
- メモに書かれていないことを推測しないでください。
- 量を書き換えないでください。量は出力に含めません。
- evidence には、区分を決めた語句をメモからそのまま写してください。
- 入力の row_id をそのまま返し、行を増やしたり減らしたりしないでください。

【廃棄の行(row_id、品目、メモ)】{rows}

2つ目の指示(見直し案)は次のとおりです。

あなたは飲食チェーンの本部で、店長に仕込み量の見直しを提案する文面を書く立場です。
目安の量は、すでに決まった式で計算されています。
「直近8週の同じ曜日に実際に使った量のうち、多いほうから2番目の量」です。

【してほしいこと】
品目ごとに、次を2〜3行で書いてください。
1. 今の仕込み表の量、目安の量、その差(渡した数字をそのまま使う)
2. 廃棄の多かった曜日と、廃棄の理由の内訳
3. 翌月の予定に照らして、店長に確かめる点(質問の形で)
4. 先月の提案があれば、その後の廃棄の変化

【厳守事項】
- 数字は入力の値をそのまま書いてください。丸めたり、計算し直したりしないでください。
- 仕込み表をこうすべきと決めつけず、「目安は○kgです。いかがでしょうか」の形にしてください。
- 入力に無い事情(天気、近隣の催事、季節の傾向)を理由として書かないでください。
- 調理の失敗と設備の不調の廃棄は、仕込み量の話と分けて書いてください。
- 店舗や店長の良し悪しを書かないでください。
- 目安が出ていない曜日(記録が足りない)は、その旨だけを書いてください。

【店舗と品目ごとの入力】{items}
【翌月の予定】{next_month_calendar}
【先月の提案と店長の返事】{last_month}

「目安の決め方」をプロンプトの冒頭に書いておくのが要点です。 決め方を知らないと、AIは目安を「予測値」と言い換え、機械が当てた数字のように書きます。 決め方を渡せば、「8週のうち多いほうから2番目」と、店長が自分で確かめられる言い方で書きます。

Step7

出力形式を固定する

理由の読み分けは次の形で受け取ります。 reason は7つの区分を enum で列挙します。

{
  "results": [
    { "row_id": "S07-2026-09-17-012", "reason": "reservation_cancel",
      "evidence": "宴会10名キャンセル" }
  ]
}

見直し案は次の形で受け取ります。

{
  "store_code": "S07",
  "items": [
    {
      "item_code": "V012",
      "weekday": "水",
      "current_qty": 3.0,
      "target_qty": 2.6,
      "unit": "kg",
      "message": "",
      "question_for_manager": "",
      "has_target": true
    }
  ]
}

1つ目の理由は、current_qty と target_qty をスクリプトが照合できることです。 AIに数字を返させるのは、文面の中の数字と並べて確かめるためです。返ってきた値がスクリプトの計算と1つでも違えば、その品目の文面は使いません。 message の中に出てくる数字も、正規表現で取り出して同じ照合をします。

2つ目は、has_target で「目安が出せない」を正式な答えにできることです。 記録の無い日が多い曜日は、無理に目安を作らず、「水曜は記録が4日に満たないため目安を出していません」と書いて返します。 記録を続けてもらう理由として、店長にも伝わります。

3つ目は、理由の読み分けの row_id で入力と出力を突き合わせられることです。 送った行と返った行の数が合わなければ、まとまりごと送り直します。

一覧のシートには、店舗・品目・曜日ごとに次の列を並べます。

列中身書く主体
仕込み量・廃棄量・使った量・廃棄率前月の合計と曜日ごとスクリプト
理由の内訳区分ごとの廃棄量スクリプト(区分はAI)
今の仕込み表の量と目安曜日ごとスクリプト
見直し案の文面と確かめる点message、question_for_managerAI
店長の返事採る/採らない/一部採る と理由人
Step8

システムへ連携する

つなぎ先方式内容
記録のスプレッドシート読み取りのみ仕込みと廃棄の記録
品目マスタ・仕込み表・営業カレンダー読み取りのみ単位、今の量、外す日と翌月の予定
Gemini APIUrlFetchApp で呼び出し理由の読み分けと、見直し案の文面
見直し案の一覧のシート書き込み集計・目安・文面と、店長の返事の欄
Gmail下書きの作成店長宛ての見直し案

仕込み表には書き込みません。 目安が正しくても、翌月に団体の予約が入っていれば、店長は多めに仕込みます。仕込み表は店長が自分で直し、直した量は翌月の「今の量」として読まれます。

店長宛てのメールは下書きまでにします。 本部の担当が案を読み、送らない品目を消してから送ります。店長の返事は、一覧のシートの返事の欄に本部が書き写すか、店長に直接書いてもらいます。

Step9

人が確認する

  1. 記録に問題のある店舗を先に見る … 「記録なし」「換算不能」の多い店舗は、見直し案より先に記録のつけ方を店長と話します
  2. 理由が unknown の廃棄を見る … 量が多いものだけ、店舗にメモの意味を聞きます
  3. 見直し案を読む … 数字の照合を通った案でも、翌月の予定と合わないものは送る前に消します
  4. 送る … 店舗ごとに、下書きを確かめてから送ります
  5. 店長の返事を残す … 採る・採らないと理由を、一覧のシートに書きます

1番目を省かないでください。 記録が欠けた店舗の目安は、欠けていない日だけから計算されています。その目安を送ると、店長は「記録をつけなくても本部が量を決めてくれる」と受け取ります。 記録が先です。

目標は、480行をならして1行1分です。 本部が見るのは差の大きい品目に絞った案と、記録に問題のある店舗で、残りの行は一覧を流し見るだけ、という想定です。

Step10

例外に対処する

起きること対応
換算の無い単位で書かれているその行を集計から外し、「換算不能」として数える。品目マスタに換算を足す
営業日なのに記録が丸ごと無い「記録なし」の印。目安の計算から外し、店舗ごとの日数を本部に知らせる
廃棄の量が仕込んだ量より多い前日の仕込みの残りを捨てた可能性がある。その日を外し、unknown の扱いで店舗に聞く
同じ曜日の記録が4日に満たない目安を出さず、has_target を false にする
新しい品目が仕込み表に加わった8週の記録がそろうまで目安を出さない
API が失敗の状態コードを返す最大2回送り直し、だめならその店舗を翌朝に回す
文面の数字が計算と合わないその品目の文面を作り直す。2回合わなければ数字だけの行にする
6分に近づいたどこまで終わったかを記録し、続きのトリガーで再開

3行目は、記録のつけ方の食い違いから起きます。 前日の残りを翌日の廃棄として書く店舗と、前日の廃棄として書く店舗があります。どちらに寄せるかを決めて、フォームの案内に書いておきます。

Step11

記録を残す

  • 処理した月、店舗ごとの処理の結果、「記録なし」「換算不能」の件数
  • 理由の読み分けの結果(row_id、reason、evidence)
  • 店舗・品目・曜日ごとの集計と目安と、そのとき使った目安の決め方(「多いほうから2番目」など)
  • 見直し案の文面と、送った日時
  • 店長の返事(採る/採らない/一部採る)と、その理由
  • 翌月の同じ品目の廃棄量

最後の2行を並べて残すのが、この構成を育てる材料です。 採った案の品目で翌月の廃棄が減ったか、欠品は起きなかったか。採られなかった案の理由が「宴会が多い時期」なら、営業カレンダーに書いてもらう事情が1つ増えます。

目安の決め方を変えたら、変えた月を記録します。 「多いほうから2番目」を「平均の1.2倍」に変えると、同じ記録から違う目安が出ます。どの月がどの決め方だったかが残っていないと、廃棄の増減の理由が追えません。

04実装レベルの3段階

最小構成:1店舗5品目を関数で集計し、メモだけAIの画面で読み分ける / 試しの目安と店長の感覚の照合
半自動化:上記+毎月1日にスクリプトが全店舗の集計・目安・見直し案の文面とメールの下書きまで作る / 月次の集計と見直し案の作成
本格構成:上記+店長の返事と翌月の廃棄を突き合わせ、目安の決め方を品目ごとに調整する案を出す / 目安の決め方の見直しまで

本記事が想定するのは半自動化です。 案を送るのは本部、仕込み表を直すのは店長です。1行3分が1分になるのはこの段階です。 本格構成に進むのは、店長の返事と翌月の廃棄が半年ほどたまってからにしてください。 採った案で欠品が起きたかどうかが分からないうちに決め方を変えると、廃棄を減らす代わりに欠品を増やす方向に寄ります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 10〜30店舗ほどの飲食チェーン、ホテルの宴会・レストラン部門、給食を出す施設などで、仕込みの量を店舗ごとの仕込み表で決めており、廃棄の記録を毎日つけている場合。記録を紙やスプレッドシートでつけているが、本部が月に一度まとめて見る時間が取れず、仕込み表が何か月も変わっていない場合。Google Workspace を使っていて、店舗のタブレットから Google フォームで記録をつけられる場合。
向いていない
  1. 1〜2店舗で、店長が毎日の廃棄を見て仕込みをその場で変えられている場合。廃棄の記録をつけておらず、これから記録の習慣を作る段階の場合(先に記録を1〜2か月続ける必要があります)。仕込みの量を翌日の予約や天気で毎日決めている業態で、曜日ごとの目安が意味を持たない場合(翌日の発注量を見込む構成のほうが合います)。AIに仕込み量を決めさせ、店舗の仕込み表を自動で書き換えたい場合。

07最小構成で試す方法

  1. 廃棄の記録がよくつけられている1店舗を選ぶ
  2. その店舗の直近8週の仕込みと廃棄の記録を、スプレッドシートの関数で品目×曜日に集計する(まずは5品目だけ)
  3. 「その他」とメモの付いた廃棄の行を、社内で使ってよいAIサービスの画面に貼り、理由の区分を選ばせる
  4. 仕込み過ぎと期限切れだけを引いて使った量を出し、曜日ごとに多いほうから2番目の量を目安にする
  5. 目安と今の仕込み表を並べた表を店長に見せ、「この差は思い当たるか」を聞く

5品目で十分です。 ここで確かめたいのは、目安の決め方が店長の感覚と合うかどうかだからです。

出てきた内容判断
店長が「確かに水曜は余る」と言うスクリプトでの自動化に進む
店長が「その週は宴会があった」と言う営業カレンダーに貸切・宴会を書く運用を足す。構成は有効
記録の無い日が多く、目安が出ない記録のつけ方が先。 AIの問題ではない

3行目が出ることは珍しくありません。 閉店後の記録は、疲れている時間に頼む作業だからです。フォームの項目を減らす、閉店の作業表に記録を入れる、のほうが先に効きます。

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

問題対策
記録の無い日を廃棄ゼロと数える「記録なし」の印を付けて計算から外す
設備の不調や予約の取消まで仕込み過ぎに数えるメモをAIに読み分けさせ、使った量の計算で分ける
AIが目安の数字を丸めて書く返ってきた数字と文面の数字をスクリプトで照合する
平均で目安を出して欠品が増える欠品を避ける側の決め方(多いほうから2番目など)を店長と決める
貸切の日で目安が振れる営業カレンダーに貸切と休業を書き、計算から外す
単位がそろわない品目マスタに換算を持たせ、換算の無い単位は外して数える
店長が案を読まない1店舗5品目までに絞り、「いかがでしょうか」の形で送る
採られなかった案を毎月繰り返す店長の返事を残し、翌月の案に先月の返事を渡す
6分の上限で止まる店舗ごとに区切り、続きのトリガーで再開する
仕込み表を自動で書き換える書き換えない。 店長が直す

上の3行が、案が信用されるかどうかを決めます。 記録の無い日の扱い、理由の分け方、数字の一致のどれか1つでも崩れると、店長は1回目の案で「本部の数字は当てにならない」と受け取り、2回目から読まなくなります。

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

この構成で扱うデータ: 店舗ごと・品目ごとの仕込みと廃棄の量、廃棄の理由のメモ、仕込み表、営業カレンダーの予約の予定です。個人の情報はほとんど含みませんが、メモに予約の客の名前が書かれることがあります。

  1. メモの客の名前を渡さない … 「○○様の宴会キャンセル」のようなメモは、AIに渡す前に予約台帳の名前の一覧と照らして伏せます。理由の読み分けに名前は要りません
  2. 有料の枠で使う … Gemini API の規約では、有料のサービスではプロンプトと応答を製品の改善に使わないとされています。店舗ごとの廃棄の量は社内の経営の数字なので、無料の枠では使いません
  3. 店長の評価に使わない … 廃棄率の店舗の並びを、店長の評価の材料にしないでください。評価に使うと、廃棄を記録しなくなります。 記録が止まれば、この構成は何も出せません
  4. 食品の安全の判断と混ぜない … 期限切れの廃棄が多いからといって、日持ちの日数を延ばす案は出させません。衛生の基準は別に決まっているものです
  5. 国の取り組みとの関係を押さえておく … 農林水産省は事業系の食品ロス量を推計して公表しており、2024年度は237万トンでした。年間の発生量が100トン以上の食品廃棄物等多量発生事業者は、毎年6月末までの定期報告が必要とされています。 該当する事業者なら、この記録は報告の材料にもなります

誤りが起きた場合のリスクは、仕込みを減らしすぎて欠品を起こすことと、記録を嫌って店舗が記録をやめることの2つです。 前者は欠品を避ける側の目安と店長の判断で、後者は評価に使わないことで防ぎます。

10まず何から始めるか

1週目:品目マスタと営業カレンダーを整える

30品目に、基本の単位、単位の換算、日持ちの日数を書きます。営業カレンダーに、過去8週の休業と貸切の日を書き込みます。 フォームの案内に、前日の残りの書き方を1行で足します。

2週目:1店舗5品目で試す

記録のよい1店舗を選び、5品目の目安を関数で出して店長に見せます。メモの読み分けは、社内で使ってよいAIサービスで行います。 店長の感覚と合うかを聞きます。

3週目:目安の決め方を決める

「多いほうから2番目」でよいか、品目によって変えるかを、店長数名と決めます。 記録の無い日が多い店舗を洗い出し、記録のつけ方を店舗と話します。

4週目:スクリプトで集計と目安までをつなぐ

毎月1日に動くトリガーを置き、全店舗の集計と目安を一覧のシートに書くところまで作ります。この時点では店長へ送らず、本部の中で数字を確かめます。

2か月目: 理由の読み分けと見直し案の文面、メールの下書きを足し、店長へ送り始めます。3か月目以降: 店長の返事と翌月の廃棄を並べ、1行3分が何分になったかを実測します。16店舗すべてに毎月案が届き、店長が返事を書くようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
時間主導型のトリガーが毎分から毎月までの間隔で動かせること。インストール型トリガーは作成した人のアカウントで実行されることGoogle: Installable triggers2026-10-07
1回の実行が6分まで、トリガーの合計実行時間が Workspace のアカウントで1日6時間、URLの呼び出しが1日100,000回であることGoogle: Quotas for Google Services2026-10-07
UrlFetchApp の fetch、muteHttpExceptions を true にすると失敗の応答でも例外にならず応答が返ることGoogle: Class UrlFetchApp2026-10-07
MailApp の送信と、htmlBody・cc・name などのオプションGoogle: Class MailApp2026-10-07
構造化出力が /v1beta/interactions の response_format(mime_type に application/json、schema)で指定できること。enum で選択肢を列挙できること。値はアプリケーションで確かめるよう書かれていることGoogle: Structured outputs(Gemini API)2026-10-07
有料のサービスではプロンプトと応答を製品の改善に使わないこと。無料のサービスには機密や個人の情報を送らないよう書かれていることGoogle: Gemini API Additional Terms of Service2026-10-07
2024年度の事業系食品ロス量が237万トン(2000年度比57%削減)と公表されていること。年間発生量100トン以上の食品廃棄物等多量発生事業者は毎年6月末までの定期報告が必要とされていること農林水産省: 食品ロス・食品リサイクル2026-10-07

目安の決め方と、仕込み表を直すかどうかは、本部と店長で決めてください。 本記事は公式ページで確認できた範囲だけを扱っています。

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

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

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

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