整合與自動化 ⚡ 中級

用 Gemini 打造 AI 雲端訂餐系統:從菜單到廚房螢幕的 4 步驟實戰

不寫一行程式碼,靠四個提示詞讓 Gemini 幫你寫出 Google Apps Script 後端、自動化表單、即時廚房跳單系統。重點不只是程式,而是學會面對欄位對不齊、權限沒開、版本沒更新這些真實開發問題。

📝 建立:2026年5月30日 ✅ 最後驗證:2026年5月30日
鴨編 卡住很正常——點段落旁的 😵 卡關 讓我們知道,或直接往下滾到問答區發問。 也可以用 👍 看懂 / 😢 看不懂 告訴我們哪裡寫得好、哪裡要改。

鴨編 鴨編開場:這篇要做的,是一套真的能用的「雲端訂餐 + 廚房跳單」系統——客人填表單點餐、資料自動進試算表、廚房螢幕即時跳出待處理的單。最酷的是,你一行程式碼都不用自己寫,全部交給 Gemini。但更重要的是,這篇會教你面對真實開發裡最常卡的三件事:欄位對不齊、權限沒開、版本沒更新。會解這三個,你才算真的會用 AI 寫程式。


🤔 我們在解決什麼問題

小吃店、拉麵店的點餐,常常是這樣的:客人喊、店員手寫單、廚房看不清楚、出餐順序亂掉。想上 POS 系統?月費不便宜,功能還用不到一半。

這篇要做的,是用完全免費的 Google 工具(表單 + 試算表 + Apps Script),搭配 Gemini 當你的工程師,拼出一套堪用的訂餐後台。

整個系統長這樣:

客人填 Google 表單 → 自動寫進「訂單紀錄」試算表 → 廚房 KDS 螢幕即時跳單 → 廚師按完成

接下來分四步,每一步你只要複製一段提示詞給 Gemini,再把它生成的程式碼貼回 Google Apps Script。

💡 什麼是 Google Apps Script(GAS)? 它是 Google 內建、免費的雲端程式環境,能讓你的試算表、表單、文件「自己會動」。不用架伺服器、不用付費,掛在你的 Google 帳號底下就能跑。


Step 1:菜單分析與後端腦袋(Code.gs)

先讓 Gemini 看懂你的菜單,並寫出資料儲存的核心邏輯。

操作:打開 Gemini,上傳你的菜單照片,貼上這段提示詞:

我正在開發一個拉麵訂餐系統。請根據我上傳的這張菜單圖片,幫我寫出 Google Apps
Script (GAS) 的後端邏輯 Code.gs。先不要生成 Google Sheets,我要先生成 Google
表單後,自動轉成 Google Sheet。

需求:
1. 撰寫一個 saveToSheet(data) 函數,能自動將資料存入名為「訂單紀錄」的工作表。
2. 自動檢查工作表是否存在,若不存在則自動建立,並設定美觀的標題列(標題需包含:
   時間、姓名、桌號、主食、套餐、單點、配料、飲品、備註、總金額、狀態)。
3. 加入 LockService 防止多人同時點餐時資料覆蓋。
4. 最後請生成一個 createForm() 函數,讓我可以直接在 GAS 執行來快速建立對應的
   Google 表單。

把程式碼貼進 GAS:前往 script.google.com,點「新增專案」,把 Gemini 生成的 Code.gs 內容整段貼進去,存檔。

執行 createForm():在編輯器上方的函數下拉選單選 createForm,按「執行」。第一次執行會要求授權,照畫面允許即可。

執行完,你的 Google 雲端硬碟就會多出一個自動建好的訂餐表單。

鴨編 鴨編說:注意提示詞裡「先生成表單,再自動轉試算表」的順序。很多人一開始就叫 AI 生試算表,結果表單和欄位對不起來。先讓表單當「資料的源頭」,後面會省下一堆對齊的麻煩。


Step 2:串接表單自動化(Trigger)

表單建好了,但它還不會「說話」——客人填完,資料不會自己進試算表。我們要讓它在提交時自動觸發儲存。

操作:回到 Gemini,貼上:

我已經建立好 Google 表單了。請幫我寫一個 onFormSubmit(e) 函數,當使用者提交表單時:
1. 自動從 e.response 抓取資料。
2. 將資料整理成物件,並呼叫剛才寫好的 saveToSheet(data)。
3. 請提醒我如何在 GAS 的「觸發器」設定中將此函數綁定為「提交表單時」。

把生成的 onFormSubmit(e) 函數貼進 Code.gs

設定觸發器(這步很關鍵):在 GAS 編輯器左側點「觸發器」(時鐘圖示)→「新增觸發器」,選擇:

  • 要執行的函數:onFormSubmit
  • 事件來源:「來自表單」
  • 事件類型:「提交表單時」

存檔後,找個人填一次表單測試,回試算表看看「訂單紀錄」有沒有自動長出新的一列。

🚨 常見錯誤:提交表單後試算表還是空的 99% 是觸發器沒設好,或設成了「來自試算表」而非「來自表單」。回去確認事件來源是不是選「來自表單」。


Step 3:打造廚房螢幕系統(KDS)

現在資料進得來了,要讓廚房看到一個即時跳單的網頁——這就是 KDS(Kitchen Display System,廚房顯示系統)。

操作:回到 Gemini,貼上:

現在我需要一個廚房顯示系統 (KDS) 網頁:
1. 在 Code.gs 加入 doGet() 以部署為網頁應用程式。
2. 寫一個 getActiveOrders() 函數,專門抓取試算表中狀態為「待處理」的單。
3. 寫一個 completeOrder(rowNumber) 函數,讓廚師按下按鈕時,將該列狀態改為「已完成」。
4. 請生成一個 index.html 檔案,具備卡片式 UI、大型字體,並設定每 10 秒自動重新
   抓取一次資料(setInterval)。

doGet()getActiveOrders()completeOrder() 貼進 Code.gs;然後在 GAS 編輯器點「+」新增一個 index.html 檔案,貼上 Gemini 生成的 HTML。

部署成網頁:點右上角「部署」→「新增部署作業」→ 類型選「網頁應用程式」,設定好權限(見下方心法二)後部署,你會拿到一個網址。用平板或廚房螢幕打開它,就是即時跳單畫面。


Step 4:最強彈性 Debug(動態對齊)

這是整篇最值錢的一步。當你之後改了表單題目、調整欄位順序,系統很可能就壞了——KDS 突然抓不到單。這時候,不要自己慌著找 bug,把這段「救命指令」丟給 Gemini:

我的試算表欄位名稱改了,或是題目變長了(例如:「【主食】請選擇拉麵」),導致
KDS 無法顯示。請幫我優化 getActiveOrders 函數:
1. 改用「模糊比對」標題文字 的方式來定位欄位索引(例如:只要標題包含「主食」
   二字就對應到該欄)。
2. 如果「狀態」欄位是空的,請自動預設為「待處理」。
3. 確保程式碼具備極強的相容性,不論欄位在第幾欄都能順利執行。

鴨編 鴨編的重點:這一步教的不是程式,是觀念。真實系統一定會改。與其寫死「主食在第 4 欄」,不如讓程式「看到標題含『主食』就對應過去」。這種「模糊比對、容錯設計」的思維,比任何一段程式碼都值得學。


💡 資深工程師的三大心法

這套流程真正的價值,不在程式碼,而在它逼你面對三個每個初學者都會撞的牆。記住這三點,少走三天的冤枉路。

心法一:「新版本」是萬靈丹

每次修改 Code.gsindex.html 後,網頁不會自動更新。你一定要重新部署,而且關鍵在「新版本」:

「部署」→「管理部署作業」→「編輯」(鉛筆圖示)→ 版本選「新版本」→「部署」。

🚨 學生反應最多的問題就是「改了沒生效」,99% 都是因為忘了選「新版本」,而是沿用了舊版本。

心法二:權限要開到對

部署為網頁應用程式時,兩個設定要對:

  • 執行身分:選「我」(讓程式用你的權限去讀寫你的試算表)
  • 誰有存取權:務必選「所有人(Anyone)」(不然廚房的平板打不開)

心法三:「狀態」欄的祕密

KDS 只抓「狀態 = 待處理」的單。如果廚房螢幕一片空白:

先去試算表手動檢查——有沒有一欄標題叫「狀態」?那一欄裡有沒有寫「待處理」?很多時候單子沒跳出來,只是因為狀態欄是空的(這也是為什麼 Step 4 要讓空白自動預設為「待處理」)。


🎯 你真正學到的

寫出程式碼,Gemini 幾秒就能做到。但這堂課真正的價值是:你學會了怎麼指揮 AI 把一個真實系統拼出來,並且在它出錯時,知道問題通常出在「欄位、權限、版本」這三個地方。

這套思維,換成任何 AI 寫程式的場景都適用。


🔗 延伸閱讀

有問題?到 首頁討論區 一起討論!

這篇文章對你有幫助嗎?

💬 問答區

卡關了?直接在這裡問,其他讀者和作者都能幫忙解答。

載入中...