【實戰教學】用 Google 試算表打造「手繪風」手機點餐系統:從零開始到除錯全紀錄

【實戰教學】用 Google 試算表打造「手繪風」手機點餐系統:從零開始到除錯全紀錄

你是否想過,不需要租用昂貴的伺服器,只要用 Google 試算表 (Google Sheets) 就能做出一個風格可愛、功能完整的「手機點餐系統」?

在這篇文章中,我將分享如何利用 Google Apps Script (GAS) 開發一個具備手繪插畫風格的網頁應用程式 (Web App)。我們將實現訂單串接、動態菜單上傳,並分享在開發過程中遇到的 SyntaxError 語法錯誤是如何解決的,以及如何將系統設定「隱藏」在後台,讓使用者體驗更流暢。

一、 專案目標與功能

我們希望打造一個簡單溫馨的點餐介面,主要功能包含:

  1. 手繪插畫風格 UI:親切、不死板,適合手作或文創類型的小店。
  2. 手機優先設計:RWD 響應式網頁,手機點餐無障礙。
  3. 核心點餐功能:輸入姓名、選擇品名、價格、數量,自動計算總金額。
  4. 後台資料庫:所有訂單自動寫入 Google 試算表。
  5. 動態菜單上傳:店主可以上傳新菜單,不需要改程式碼。

二、 開發過程全紀錄

第一步:建立資料庫 (Google Sheets)

首先,建立一個新的 Google 試算表,並重新命名兩個工作表:

  • orders (訂單):欄位包含 時間戳記, 姓名, 品名, 單價, 數量, 總金額
  • menu (菜單):欄位包含 品名, 價格, 圖片連結(選填)

第二步:後端核心 (Google Apps Script)

點選 擴充功能 > Apps Script,我們需要處理兩個主要的函數:doGet (顯示網頁) 和 doPost (接收訂單)。

關鍵設定:隱藏系統 URL 在開發初期,我們可能需要手動輸入 Script URL 來測試。但為了讓使用者打開網頁就能用,我們將 URL 直接寫入程式碼設定中,不需要使用者操心。

JavaScript

// 後端系統設定:這裡定義您的 Web App URL const SYSTEM_CONFIG = { scriptUrl: "https://script.google.com/macros/s/AKfycbza4cEldF4IuAzevHtlYDVxHbHxWY8pGqt_QnXNTtz_1ahd_zypBJFOD690FhXVWyE3/exec", sheetId: "您的試算表ID" // 若有需要指定 }; function doGet(e) { return HtmlService.createTemplateFromFile('Index') .evaluate() .setTitle('手繪風點餐系統') .addMetaTag('viewport', 'width=device-width, initial-scale=1'); } function processForm(formObject) { // 處理訂單寫入試算表的邏輯 var url = "您的試算表URL"; var ss = SpreadsheetApp.openByUrl(url); var ws = ss.getSheetByName("orders"); ws.appendRow([ new Date(), formObject.name, formObject.item, formObject.price, formObject.quantity, formObject.total ]); return "訂購成功!"; }

第三步:前端介面與手繪風格 (HTML/CSS)

為了達成「手繪風」,我們使用了 CSS 的 border-radius 不規則數值以及手寫字體設定,並加入了類似素描線條的邊框。

HTML

<style> /* 手繪風格關鍵 CSS */ .hand-drawn-box { border: 2px solid #333; border-radius: 255px 15px 225px 15px / 15px 225px 15px 255px; /* 不規則圓角 */ box-shadow: 2px 3px 5px rgba(0,0,0,0.2); font-family: "Comic Sans MS", "Chalkboard SE", sans-serif; /* 模擬手寫字 */ background: #fff; padding: 20px; } /* 按鈕的手繪感 */ button { background: #ffcc00; border: 2px solid #000; transform: rotate(-1deg); transition: transform 0.2s; } button:active { transform: rotate(1deg) scale(0.95); } </style>

在 JavaScript 部分,我們將後端的 Script URL 設定為全域變數,這樣 fetchgoogle.script.run 呼叫時就能直接使用,隱藏了複雜的設定。

第四步:功能升級 - 上傳菜單

為了讓店家能更新菜單,我們新增了一個「上傳菜單」的功能。這涉及到讀取 menu 工作表的資料,並動態生成前端的下拉選單。

在此階段,我們遇到了一個常見的挑戰。

第五步:除錯實錄 (Debug)

在整合程式碼時,系統噴出了錯誤訊息:

Error: SyntaxError: Invalid or unexpected token (行數:28, 37)

問題分析: 這種錯誤在 GAS 開發中非常常見,通常發生在:

  1. 字串換行問題:在 JavaScript 中,普通的單引號 ' 或雙引號 " 不支援跨行字串。
  2. HTML 模板嵌入錯誤:在 .gs 檔案中直接拼接 HTML 字串時,如果不小心斷行或引號未閉合,就會報錯。

解決方案:

  1. 使用樣板字面量 (Template Literals):將原本的引號改為反引號 ( ` ),這樣就可以支援多行字串與變數嵌入 ${variable}
  2. 檢查拼接符號:確認所有的 + 號前後都有正確連接字串。

修正前 (錯誤範例):

JavaScript

// 這樣寫如果換行會報錯 var html = "<div class='menu-item'>" + item.name + " </div>";

修正後 (正確範例):

JavaScript

// 使用反引號,或是確保都在同一行 var html = `<div class='menu-item'> ${item.name} </div>`;

經過兩次修正(第一次修復基礎語法,第二次修復新增上傳功能後的拼接錯誤),系統終於順利運行。

三、 系統設定與部署

最後一步是將這些複雜的設定「隱藏起來」。

在程式碼的最終版本中,我們將 Google Script URL 直接寫死在後端的 Code.gs 或前端的 <script> 變數中。使用者看到的介面只有清爽的表單,不需要去複製貼上那串長長的網址。

部署步驟:

  1. 點擊 Apps Script 右上角的「部署」 (Deploy)。
  2. 選擇「新增部署」 (New deployment)。
  3. 類型選擇「網頁應用程式」 (Web app)。
  4. 執行身分:我 (Me)
  5. 誰可以存取:任何人 (Anyone) (這樣客人才不用登入 Google 也能點餐)。

四、 成果展示與結語

透過這次的實作,我們完成了一個:

  • 介面可愛:手繪線條與溫暖配色。
  • 功能實用:從點餐到後台統計一條龍。
  • 維護容易:透過試算表即可管理訂單與菜單。

程式開發的過程中,遇到 SyntaxError 是家常便飯,重要的是學會看錯誤行數,檢查引號與斷行。希望這篇文章能幫助想嘗試自製點餐系統的你!


網頁呈現

網頁呈現

網頁呈現

網頁呈現

網頁呈現

網頁呈現

試算表內容

試算表內容


留言
avatar-img
牧牧的成長實驗室
163會員
680內容數
哈囉!我是牧牧, 我是一位成長曲線管理師,也是一名數位創作者。我的熱情在於將複雜的知識變得簡單易懂。 在這裡,我會用最親切的方式,分享專業的兒童成長管理秘訣,並拆解各種 AI 工具與數位技巧,讓您能快速上手,實際應用。無論是為孩子打造健康基石,還是提升數位效率,我都希望能成為您實用且可靠的夥伴。
2026/01/06
在數位內容爆炸的時代,日系手繪雜誌風格以其溫柔細膩的質感,能有效抓住讀者目光,建立情感連結。本文解析此風格的核心公式,包含溫和的手繪插畫、水彩與色鉛筆質感、柔和自然光線、極簡構圖與留白美學、溫暖粉彩色調(薄荷綠、奶油黃、柔和橘、櫻花粉),以及 RISO 印刷效果,營造舒適、健康、專業的氛圍。
Thumbnail
2026/01/06
在數位內容爆炸的時代,日系手繪雜誌風格以其溫柔細膩的質感,能有效抓住讀者目光,建立情感連結。本文解析此風格的核心公式,包含溫和的手繪插畫、水彩與色鉛筆質感、柔和自然光線、極簡構圖與留白美學、溫暖粉彩色調(薄荷綠、奶油黃、柔和橘、櫻花粉),以及 RISO 印刷效果,營造舒適、健康、專業的氛圍。
Thumbnail
2025/12/29
【AI 繪圖筆記】打造夢幻柔美的六宮格水彩背景:提示詞完全解析 在 AI 圖像創作中,如何精準控制畫面的佈局與氛圍是一門有趣的學問。今天想分享一組非常實用的提示詞(Prompt),它能生成出一幅具有「3:2 寬幅比例」、且帶有「六宮格佈局」的柔美水彩背景。 這組提示詞非常適合用於製作簡報底圖、社
Thumbnail
2025/12/29
【AI 繪圖筆記】打造夢幻柔美的六宮格水彩背景:提示詞完全解析 在 AI 圖像創作中,如何精準控制畫面的佈局與氛圍是一門有趣的學問。今天想分享一組非常實用的提示詞(Prompt),它能生成出一幅具有「3:2 寬幅比例」、且帶有「六宮格佈局」的柔美水彩背景。 這組提示詞非常適合用於製作簡報底圖、社
Thumbnail
2025/12/26
從「天使髮絲」看 AI 繪圖的精準度:如何撰寫具有專業攝影感的 Prompt? 你是否曾經在輸入 AI 繪圖指令時,覺得自己像是在「碰運氣」? 輸入了「一碗義大利麵」,出來的結果卻像超市冷凍包裝上的廉價照片;想要一張「高品質」的照片,卻不知道除了加上 "High Quality" 之外,還能做些
Thumbnail
2025/12/26
從「天使髮絲」看 AI 繪圖的精準度:如何撰寫具有專業攝影感的 Prompt? 你是否曾經在輸入 AI 繪圖指令時,覺得自己像是在「碰運氣」? 輸入了「一碗義大利麵」,出來的結果卻像超市冷凍包裝上的廉價照片;想要一張「高品質」的照片,卻不知道除了加上 "High Quality" 之外,還能做些
Thumbnail
看更多