《零基礎快速入門:GenAI 搭配 Google Apps Script 的工作自動化寶典》Chapter 6-1 哇!程式出錯了!

很快地,30天的鐵人賽文章已經剩最後幾天了。
雖然我還有很多有趣的自動化案例可以分享,
不過限於天數,
最後這幾天的文章我想要分享一些讓你在這條自動化之路上,
能走得更平順的小秘訣。


首先就來聊一下,
當程式出錯了,
或是當程式的效果跟想像的不一樣,
該怎麼辦?


作為 Google Apps Script 初學者,
常常會遇到程式錯誤或成果不如預期的狀況。
這是正常的!


其實不只是初學者,
不管是資深工程師還是天才工程師,
都一樣會遇到程式錯誤。

俗話說:天底下只有兩種程式,
1. 沒有錯誤的程式
2. 沒有人用的程式。

所以程式效果不如你預期的時候,
先別緊張。
反正你有備份了嘛!

……等等,你備份了,對嗎?

因為你看過這篇了,對嗎?
《零基礎快速入門:GenAI 搭配 Google Apps Script 的工作自動化寶典》Chapter 3-1 沒看這篇之前,千萬不要執行程式

請你一定要記得備份,
我們先立於不敗,再來求勝!

程式遇到錯誤怎麼辦?

寫程式遇到 bug 是稀鬆平常的事,
以下提供幾個小技巧,
讓你在除蟲的時候更加順利!

1. 從小範圍開始測試

如果你想做的自動化功能有很多步驟,
初學者先別急著挑戰一次到位完成程式。

我們可以將功能拆成多個小步驟,
逐一測試每個部分是否正常執行,
再逐步組合成完整的程式。

例如你想把 Google Sheets 某個範圍的資料做成報表,
我們至少可以拆成兩階段

階段1. 程式可以讀取到正確的資料
階段2. 程式可以寫入到正確的位置

等兩件事各自都驗證成功了,
再把這兩個功能串起來就好。

2. 善用 Logger.log() 進行除錯

在 Google Apps Script 中,
可以使用 Logger.log()來檢查程式執行過程中的變數值與狀態。

程式就像個黑盒子,
他在運轉的時候,我們也不知道他肚子裡在搞些什麼玩意。

而 Logger.log() 的功能就像是可以在黑盒子上安裝一個儀表板,
顯示出目前狀態。

更方便的是,你不需要自己一行一行加上 Logger.log()。
你可以這樣跟 GenAI 說:
「請幫我在以下這個 Google Apps Script 的程式碼中,加上充份的 Logger.log(),以便我觀察程式的運行。」

Logger.log() 使用範例

就像這樣把 Logger.log() 穿插放在程式碼中間:

  function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  Logger.log("目前工作表名稱:" + sheet.getName());  // 確認是否正確連接到工作表
  var cellValue = sheet.getRange("A1").getValue();
  Logger.log("A1 儲存格的值:" + cellValue);  // 檢查 A1 儲存格的值是否符合預期
  }

執行完程式後,就可以在 Apps Script 編輯器中的日誌視窗查看輸出的資訊。

3. 嘗試理解 GenAI 產生的程式碼

我們這個系列文強調的都是「你不用懂任何程式語法,也可以做出自動化程式」
但這並不妨礙我推薦你試著去閱讀理解他。

重點不是在讀懂程式語法,而是去理解他的運作邏輯。

當然,硬要讀懂程式碼太為難我們了。
這裡提供兩個便於快速理解程式的 prompt,你可以這樣要求 AI:

「請幫我在這個 Google Apps Script 的程式碼中,每一行都加上中文的註解。」
或是
「請幫我逐行解釋這個程式的動作」

黃色小鴨思考法

另外有一個更進一步的技巧是,
不要被動地請 AI 解釋給你聽,
而是你主動去解釋給別人聽。

你可以找你的同事,試試看跟他解釋你這個程式在做什麼功能。
你在根據什麼食材、創作什麼料理?

有時候在嘗試解釋的過程中,
同事還沒聽懂,你就突然頓悟了。

蛤?同事沒空理你嗎?
那你解釋給黃色小鴨聽吧,一樣有效!

請參見:小黃鴨除錯法 – 維基百科

4. 勇於面對錯誤資訊

當程式出錯時,不要忽略錯誤訊息。
別看到紅字就先怕了,請正視他!

稍微閱讀一下錯誤訊息,有時候他會指出非常具體的出錯原因。
有時候甚至不需要再拿去問 AI,
新手都可以瞬間解決。

如果還是看不懂呢?
那就把錯誤訊息直接複製貼上問 AI 吧,
他會試圖幫你修復的!

5. 建立備份,隨時可以回復

雖然之前已經講過了,
但值得再提醒一次:記得備份!!!

在修改或執行程式碼前,務必先建立備份。
無論是工作表、文件、還是雲端硬碟的資料夾,都要有一份原始檔案的備份。
這樣即便執行程式碼造成了資料損壞或刪除,也能快速回復。

結語

再說三次,
程式一定會有錯誤、一定會有錯誤、一定會有錯誤。

卡住了沒關係,把石頭搬開繼續前進。
跌倒了沒關係,快快爬起來繼續前進。

只要掌握了測試與除錯的技巧,
你就能愈快搬開石頭、愈快重新爬起,
愈快打造出有用的工具!
愈快享有自動化的人生!