魔鬼藏在細節裡:為什麼我的自動化腳本失靈了?

當你把上一章的「自動群發薪資條」腳本運用到公司實戰中,大家都對你投以崇拜的眼光。你甚至把腳本設定了「每個月 5 號早上 9 點自動執行 (Triggers)」,以為從此可以高枕無憂。

結果到了下個月 5 號的早上,你一進辦公室,發現大家都在抱怨:「為什麼我收到的薪資條,時間寫的是 4 號晚上?而且裡面的金額全部都是上一筆的舊資料?」

這就是所有自動化工程師都會遇到的經典噩夢:時區錯亂與快取 (Cache) 延遲。 在 GAS (Google Apps Script) 這個雲端世界裡,由於 Google 的伺服器散佈在全世界,它預設的運作方式可能跟你「肉眼看到的表單」不一樣。如果你不了解這些隱藏的坑點,你的自動化系統就會變成一顆不定時炸彈。


坑點一:迷失在太平洋的時區 (Timezone) 問題

當你在 GAS 裡面使用 JavaScript 內建的 new Date() 函數想要取得「今天的日期」時,你可能會驚訝地發現,印出來的時間竟然少了 8 個小時!或者是少了好幾天。 這是因為 GAS 的伺服器預設通常是 美東時間 (EST) 或是 太平洋標準時間 (PST),而不是我們台灣所在的 台北時間 (GMT+8)

Vibe Prompt 除錯法:強制校正時區

要解決這個問題,我們絕對不能自己去寫 時間加 8 小時 這種容易出錯的蠢程式。我們應該使用 Google 內建的 Utilities.formatDate 神器。

【GAS 時區校正 Prompt】 我正在撰寫 Google Apps Script。 我想要取得今天的日期與時間,並把它寫入試算表的 A1 儲存格中。 但是我發現 new Date() 印出來的時間不是台灣時間。 請幫我寫一段程式碼,利用 Utilities.formatDate 將現在的時間強制格式化為台灣時間 (Asia/Taipei)。 輸出的格式請設定為:YYYY-MM-DD HH:mm:ss

AI 產出的校正代碼:

function writeCurrentTime() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 取得現在時間 (可能是美國時區)
  const now = new Date();
  
  // 強制轉換為台北時區,並格式化為我們熟悉的長相
  const taipeiTime = Utilities.formatDate(now, 'Asia/Taipei', 'yyyy-MM-dd HH:mm:ss');
  
  // 寫入 A1 儲存格
  sheet.getRange('A1').setValue(taipeiTime);
  Logger.log(`寫入的台灣時間為:${taipeiTime}`);
}

從此之後,你的自動化報表再也不會出現「穿越時空」的靈異現象了。


坑點二:讀不到最新資料?強制刷新快取 (Flush)

第二個常見的致命坑點是:Google Sheet 為了讓網頁跑得快,它會把資料「快取 (Cache)」起來。 如果你寫了一個腳本,邏輯是:

  1. 寫入一個新數值到 A1 儲存格。
  2. A1 儲存格有一個公式 =A1*100,結果會顯示在 B1。
  3. 腳本立刻去讀取 B1 的數值。

你會崩潰地發現,腳本讀到的 B1 竟然是「舊的數字」!因為腳本跑得太快了,Google Sheet 還來不及在背景把公式算完,腳本就已經讀取過去了。

Vibe Prompt 除錯法:強迫 Google 停下來算完

【GAS 強制更新 Prompt】 我的 GAS 腳本在寫入資料後,立刻去讀取另一個包含公式的儲存格,但總是讀到舊的資料(公式還沒重新計算完)。請問該如何強制 Google Sheet 在腳本執行中立刻重新計算並更新畫面?

AI 會告訴你一個價值連城的隱藏指令:SpreadsheetApp.flush();

function updateAndRead() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 1. 寫入新資料到 A1
  sheet.getRange('A1').setValue(10);
  
  // 2. 🚨 終極防禦:強迫 Google Sheet 立刻更新所有公式與畫面!
  SpreadsheetApp.flush();
  
  // 3. 現在去讀取 B1 的公式結果,保證 100% 是最新的!
  const result = sheet.getRange('B1').getValue();
  Logger.log(result);
}

加上這行 flush() 之後,你的自動化排程就擁有了鋼鐵般的穩定性。


坑點三:執行時間超過 6 分鐘的「死亡報錯」

Google 雖然很大方地提供免費的伺服器給我們跑 GAS,但它有一個嚴格的限制:「任何一個腳本,執行時間不能超過 6 分鐘」。 如果你寫了一個超級爬蟲,要去爬 1000 個網頁,跑到第 6 分鐘的時候,Google 會毫不留情地直接把你的腳本強制「砍斷 (Exceeded maximum execution time)」。

進階解決方案:切塊執行與紀錄進度

遇到這種狀況,你的 Vibe Prompt 就要升級了。你要教 AI 怎麼寫「接力賽腳本」。

【超時防護 Prompt】 我的 GAS 腳本需要處理 1000 筆資料,每次都會遇到 6 分鐘超時的問題。 請幫我修改程式碼的架構。 在處理每筆資料後,請在資料旁邊的欄位寫入 處理完成。 並且請加上時間檢查邏輯:每次迴圈開始前,檢查 Date.now() 是否已經執行超過 5 分鐘。 如果超過 5 分鐘,請主動 return 結束腳本,避免被系統強制砍斷。 這樣我只要設定一個「每 10 分鐘執行一次」的 Trigger,它就會自動接續上一筆還沒處理的資料繼續往下跑。

透過這個完美的接力賽架構,你就能夠完全突破 Google 的 6 分鐘限制,讓你的腳本變成一個無底洞的永動機!


結語:掌控自動化的神兵利器

恭喜你!完成這 5 章的 GAS 實戰課程後,你已經超越了 95% 每天只會按 Ctrl+C 與 Ctrl+V 的上班族。 你擁有了一支隱形的機器人軍隊,可以幫你抓股價、算報表、發信件。更重要的是,你學會了遇到錯誤時如何用 Vibe Coding 精準除錯。

不要停下腳步!把這些自動化思維帶入你每天的日常工作中,你會發現,時間是你最大的資產。讓我們繼續前進,探索下一個令人興奮的科技領域!


🎁 [VIP 專屬加碼] GAS 極致擴充:串接 OpenAI 與 LINE Notify

在學會了基礎的 GAS 表單自動化後,你已經可以幫行政人員省下大量的時間了。 但如果我們把 GAS 這個免費的後端,加上「AI 的大腦 (OpenAI)」與「最強的通知渠道 (LINE)」,這套系統的商業價值將會呈現指數型爆炸。

想像一個情境:「當客人填寫 Google 表單客訴時,系統自動讓 AI 分析客訴情緒,如果情緒極度憤怒,立刻透過 LINE 傳送警報給老闆的群組。」 這個功能在市面上,至少可以向企業收取每月 3000 元的維護費。而你,只需要花 15 分鐘。

1. LINE Notify 串接實戰 (免審核、免月費)

比起正規的 LINE 官方帳號 (Messaging API),LINE Notify 是一個極度輕量、適合用來做內部警報的工具。 你只需要去 LINE Notify 官網申請一組權杖 (Token)。

✅ Vibe Prompt 示範:

「我目前在 Google Apps Script (GAS) 環境中。

  1. 請幫我寫一個函式 sendLineNotify(message)
  2. 請使用 UrlFetchApp.fetch 呼叫 LINE Notify 的 API (網址: https://notify-api.line.me/api/notify)。
  3. Headers 請帶上 Authorization: Bearer [你的Token]
  4. Payload 為 { "message": message }
  5. 請加上 try-catch 錯誤處理。」

這段不到 10 行的程式碼,就是你建立所有「自動化報警系統」的核心基石。

2. OpenAI API 串接:讓試算表擁有智商

GAS 最強大的地方在於它的 UrlFetchApp 可以呼叫全世界任何 API。 你可以寫一個自訂函數,讓 Google Sheet 的儲存格直接變成 ChatGPT!

✅ Vibe Prompt 示範:

「請在 GAS 中寫一個自訂函式 ASK_AI(prompt, text)

  1. 呼叫 OpenAI 的 https://api.openai.com/v1/chat/completions API。
  2. 使用 gpt-4o-mini 模型。
  3. 將使用者的 prompt 與 text 組合送出,並解析回傳的 JSON 結果。
  4. 把這個函式設計成可以讓我在 Google 試算表的儲存格中直接使用 (例如輸入 =ASK_AI("請幫我把這句話翻譯成日文", A1))。」

當你把這個腳本貼進去後,你的客戶在 Google 試算表裡面,只要拉一下十字游標,整排的商品文案就會被 AI 自動翻譯好、或是自動寫好社群貼文!

3. 銷售自動化專案的終極話術

當你把這些技術組合在一起時,你賣的已經不是「幫你寫個腳本」,而是「幫你省下一個助理的薪水」。

「老闆,你們現在請工讀生每天看報表、回訊息,一個月至少要花兩萬。我幫你導入這套 AI 表單自動化系統,建置費收你三萬就好。以後系統 24 小時幫你監控客訴、自動發信、自動推播 LINE 群組,不會生病也不會遲到。」

這種「以投資回報率 (ROI)」為導向的談判話術,就是你透過這門課學到最珍貴的財富。去向市場證明你的價值吧!

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!