今天我們要來講解 Google 表單與 Google Apps Script (GAS) 的進階教學:如何在試算表的 Google Apps Script 中進行偵錯?
TypeError: Cannot read property 'parameter' of undefined
案例情境:訂單查詢系統
查詢:輸入日期區間,查詢訂單(資料存在 Google Sheet 中)。 更新狀態:勾選特定的訂單,將狀態從「未出貨」更改為「已出貨」或其他狀態。
遇到的問題
解決方法
方法一:透過前端 URL 測試(較不直觀)
在前端網頁開啟開發者工具(按 F12)。 操作你的網頁功能(例如按下查詢或更新)。 在 Network 分頁或 Console 中找到實際呼叫的 GAS 網址(包含參數)。 複製該網址,貼到瀏覽器網址列執行。
方法二:建立「測試函數」模擬參數(推薦 ⭐)
複製主程式:將原本的 doGet(e) 函數內容複製一份。 建立測試函數:將複製的函數改名,例如 function doTest()。 移除參數依賴:將原本依賴 e.parameter 獲取變數的部分,直接改成手動賦值。 原本寫法:var orderId = e.parameter.orderId; 測試寫法:var orderId = "123,456,789"; (直接填入你想測試的數據)
執行測試:在編輯器上方選擇 doTest 函數,按下「執行」或「偵錯」。
程式碼範例:
使用「偵錯」模式的好處
設置斷點 (Breakpoints):在行號旁邊點一下,程式執行到這行會暫停。 查看變數狀態:當程式暫停時,右側視窗會顯示當前所有變數的值、型別(Array, String, Date 等)。你不需要再像以前一樣寫滿 Logger.log 來猜數值了。 逐步執行:可以單步執行程式,觀察邏輯判斷是否正確。
實戰除錯:注意資料型別 (String vs Number)
錯誤狀況:如果你的變數是「數字 (Number)」型別,使用 indexOf() 會報錯 is not a function。 正確觀念:indexOf() 只能用於「字串 (String)」或「陣列」。 解決方式:在使用前,確保將數字轉換為字串,或是檢查資料來源是否正確被解析為字串。
總結
最後提醒大家,程式修改完成後,記得要重新部署 (Deploy) 為新的版本,前端網頁才會生效喔!
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。