2025年8月19日 星期二

【Google 表單教學】如何使用單選方格製作多項目訂購單?(含自動計算與Email通知)

您是否也曾遇過這樣的困擾?想用 Google 表單製作訂購單,但產品品項太多,特別是像點心、蛋糕這類商品,常常只是口味或尺寸上的些微差異。如果為每一個品項都建立一個問題,表單將會變得冗長不堪,讓消費者失去填寫的耐心。

今天,我們要分享一個實用的技巧,解決網友遇到的「點心蛋糕類」訂購問題。我們將利用 Google 表單中的「單選方格」功能,結合一點 Google Apps Script,打造一個清爽、易於操作,並且能自動計算金額、寄送訂單確認信的多項目訂購單!

核心問題

網友的產品是點心蛋糕類,主要差異在於口味。若為每個口味都設定一個問題選項,會導致表單過於冗長。

解決方案: 使用「單選方格」(Multiple-choice grid) 讓使用者在同一個問題區塊中,為不同的品項選擇數量。


第一步:建立 Google 表單結構

首先,我們來設計表單的基礎架構。

  1. 新增表單:前往 Google 雲端硬碟,建立一份新的 Google 表單,並為其命名,例如「點心坊訂購單」。

  2. 新增「單選方格」問題

    • 點擊右側的「+」新增問題。

    • 在問題類型下拉選單中,選擇「單選方格」。

  3. 設定方格內容

    • 問題標題:輸入這個產品類別的描述,例如:「單片$50,請選口味和數量」。

    • 列 (Rows):輸入您的產品項目。每一列代表一個獨立的品項。

      • 原味巴斯克

      • 芝麻巴斯克

      • 巧克力巴斯克

    • 欄 (Columns):輸入數量的選項。

      • 強烈建議從「0」開始,這樣使用者若不小心點錯,還可以點選「0」來取消該品項。

      • 依序填上 1, 2, 3, 4, 5... 等您希望提供的最大訂購數量。

  4. 複製問題以建立不同價格區間
    如果您的產品有不同價格,例如有些是 $50,有些是 $100,您可以使用下方的「複製」圖示來快速建立一個新的方格,再修改標題與品項即可。

    • 重要提醒:每一個「單選方格」問題的標題必須是獨一無二的,否則後續的程式碼將無法正確辨識。例如,您可以命名為「單片

      50...」和「單片
      100...」。


第二步:設定 Google Apps Script 自動化處理

當表單結構完成後,我們需要透過一點程式碼來實現自動計算總金額與寄送確認信的功能。

  1. 建立回應試算表

    • 在表單編輯頁面,點擊「回覆」分頁。

    • 點擊綠色的試算表圖示,選擇「建立新試算表」。

  2. 開啟指令碼編輯器

    • 在開啟的 Google 試算表中,點擊上方選單的「工具」>「指令碼編輯器」。

  3. 貼上程式碼

    • 將編輯器中原有的程式碼清空,並貼上下方提供的完整程式碼。

    • 點擊上方的「儲存專案」圖示。

    function autoSendEmail(data) {
      // --- 基本設定區 ---
      var subject = "點心坊訂購單"; // 信件標題
      var emailTitle = "電子郵件地址"; // 表單中收集 email 欄位的標題
      // --- 設定區結束 ---
    
      var namedValues = data.namedValues;
      var values = data.values;
      var notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0] : '';
      var html = '';
    
      // 設定產品品項與價格 (key:value 格式)
      // 重要:這裡的 "key" 必須與表單上的「問題標題」和「列項目」完全一致!
      var prices = {
        "單片$50,請選口味和數量": { "原味巴斯克": 50, "芝麻巴斯克": 50, "巧克力巴斯克": 50 },
        "單片$100,請選口味和數量": { "原味巴斯克1": 100, "芝麻巴斯克1": 100, "巧克力巴斯克1": 100 }
        // ...可以繼續增加更多價格區間
      };
    
      var money = 0;
      var num = 0; // 計算總訂購數量
    
      // 設定表單顯示欄位 (欄位名稱必須和表單問題標題完全一樣)
      var fields = ["單片$50,請選口味和數量", "單片$100,請選口味和數量"];
    
      for (var i = 0; i < fields.length; i++) {
        var fieldName = fields[i];
        if (namedValues[fieldName] && namedValues[fieldName][0] !== "") {
          var quantity = parseInt(namedValues[fieldName][0], 10); // 將數量轉為數字
          if (quantity > 0) {
            var rowName = values[i + 1]; // 透過 values 取得使用者選擇的列項目名稱
            var price = prices[fieldName][rowName];
            
            html += fieldName + " [" + rowName + "] 數量:" + quantity + "<br>";
            money += price * quantity;
            num += quantity;
          }
        }
      }
      
      // 設定折扣邏輯 (範例)
      var finalMoney = money;
      if (num >= 15) {
        finalMoney = money * 0.8;
        html += "<br>總購買數量" + num + "個,共" + money + "元,<b>打8折後金額" + finalMoney + "元</b><br>";
      } else if (num >= 10) {
        finalMoney = money * 0.85;
        html += "<br>總購買數量" + num + "個,共" + money + "元,<b>打85折後金額" + finalMoney + "元</b><br>";
      } else if (num >= 5) {
        finalMoney = money * 0.9;
        html += "<br>總購買數量" + num + "個,共" + money + "元,<b>打9折後金額" + finalMoney + "元</b><br>";
      } else {
        html += "<br>總購買數量" + num + "個,共需" + money + "元<br>";
      }
      
      html += "<hr>備註:運費請自行加總";
    
      // 寄送 Email
      if (notifyEmail) {
        MailApp.sendEmail({
          to: notifyEmail,
          subject: subject,
          htmlBody: html
        });
      }
    }
  4. 設定觸發條件

    • 在指令碼編輯器左側,點擊「觸發條件」(時鐘圖示)。

    • 點擊右下角的「+ 新增觸發條件」。

    • 要執行的功能:選擇 autoSendEmail

    • 選取活動來源:選擇「試算表」。

    • 選取活動類型:選擇「提交表單時」。

    • 點擊「儲存」。過程中會要求您授權,請依照指示完成授權步驟。


大功告成!立即測試

現在,您的自動化訂購單已經完成了!回到您的 Google 表單預覽頁面,試著填寫一筆訂單,提交後很快您設定的 Email 信箱就會收到一封自動計算好金額的訂單確認信了!

透過這個方法,您可以輕鬆管理擁有多種口味、尺寸或規格的產品訂單,不僅讓表單看起來更專業整潔,也大幅提升了處理訂單的效率。趕快動手試試看吧!




沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

【Google 表單教學】如何使用單選方格製作多項目訂購單?(含自動計算與Email通知)

您是否也曾遇過這樣的困擾?想用 Google 表單製作訂購單,但產品品項太多,特別是像點心、蛋糕這類商品,常常只是口味或尺寸上的些微差異。如果為每一個品項都建立一個問題,表單將會變得冗長不堪,讓消費者失去填寫的耐心。 今天,我們要分享一個實用的技巧,解決網友遇到的「點心蛋糕類」訂...