Vibe Coding 實戰:從零打造你的匯率爬蟲機器人
上一章我們成功開啟了 Google Apps Script 的開發畫面。現在,我們要把這個畫面暫時放著,打開我們最強大的開發夥伴:Cursor IDE (或 ChatGPT, Claude)。
在傳統的資訊補習班教學中,這一步老師通常會開始在黑板上寫起天書:
什麼是 UrlFetchApp 類別?
什麼是 JSON.parse?
什麼是 SpreadsheetApp.getActiveSpreadsheet()?
但在 Vibe Coding (詠唱開發) 的世界裡,這些你通通都不需要背! 你只需要知道一件事:「如何用精準的中文,向 AI 描述你的業務需求」。
寫出完美的 Vibe Prompt (氛圍詠唱咒語)
要讓 AI 一次就寫出能正確運作在 GAS 上的程式碼,我們的咒語絕對不能太過含糊(例如不能只說:「幫我寫一個抓匯率的程式」)。完美的咒語必須包含三個關鍵要素:
- 身份與環境設定:告訴 AI 這是在 Google Apps Script 上跑的,這會大幅減少 AI 寫成 Node.js 或 Python 的機率。
- 輸入源 (Input):你要它去哪裡抓資料?有沒有指定的 API?
- 輸出目標 (Output):抓到的資料要怎麼放到 Google Sheet 裡?放在哪一欄?
以下為您準備了第一套基礎咒語。請毫不猶豫地把它複製起來,貼給您的 AI 工具:
【請複製以下基礎 Prompt 咒語】 你現在是一個專業的 Google Apps Script (GAS) 開發者。 我需要你幫我寫一支函數,完成以下任務:
- 請使用 GAS 內建的
UrlFetchApp呼叫一個公開免費的匯率 API(例如 exchangerate-api,目標是抓取「美金 USD」對「台幣 TWD」的即時匯率)。- 將抓到的匯率資料進行 JSON 解析。
- 使用
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()取得我目前打開的試算表。- 將「當下執行程式的日期與時間」寫入試算表的 A 欄 (A column) 的最後一列 (appendRow)。
- 將解析出來的「美金匯率數字」寫入試算表的 B 欄 (B column) 的最後一列。
- 為了防止抓取失敗,程式碼必須包含完整的
try-catch錯誤處理,並且請加上清楚的繁體中文註解。
🌟 更多進階情境的 Prompt 咒語庫 (Bonus)
為了讓您能舉一反三,我們特別準備了其他兩種商業情境的咒語。如果您不想要抓匯率,您可以改用這兩個咒語試試看!
情境 A:股市追蹤自動化咒語
【股市追蹤專用 Prompt】 你現在是一個專業的 Google Apps Script (GAS) 開發者。 我需要你幫我寫一支腳本:
- 請使用
UrlFetchApp抓取台灣證券交易所的公開 API 或 Yahoo Finance API,目標是取得「台積電 (2330)」今天的收盤價。- 將「當前日期」寫入 Google 試算表的 A 欄最後一列。
- 將「台積電收盤價」寫入 B 欄最後一列。
- (進階) 請檢查 C 欄的成本價,如果 B 欄的收盤價跌破 C 欄的成本價,請使用
MailApp.sendEmail自動發送一封警告信到我的信箱。
情境 B:每日氣象小幫手咒語
【氣象自動紀錄 Prompt】 你現在是一個專業的 Google Apps Script (GAS) 開發者。 請幫我寫一支腳本:
- 呼叫中央氣象署的開放資料 API (我會自己補上金鑰),抓取「台北市」明天的降雨機率與最高溫度。
- 取得目前啟動的 Google Sheet。
- A 欄寫入日期、B 欄寫入溫度、C 欄寫入降雨機率。
- 請加上詳細的中文註解,告訴我待會金鑰要貼在哪一行。
將程式碼貼回 GAS 並執行
假設您使用了基礎的匯率咒語,AI 通常會立刻生成一段類似下方的程式碼給你(因為 AI 每次生成的變數名稱可能略有不同,這是正常的):
function fetchExchangeRate() {
try {
// 1. 設定免金鑰的匯率 API 網址 (以 USD 為基準)
const apiUrl = "https://open.er-api.com/v6/latest/USD";
// 2. 透過 UrlFetchApp 發送 HTTP 請求
const response = UrlFetchApp.fetch(apiUrl);
const json = JSON.parse(response.getContentText());
// 3. 從 JSON 中取得台幣 (TWD) 的匯率
const twdRate = json.rates.TWD;
// 4. 取得當下時間,並格式化為字串
const now = new Date();
const timeString = Utilities.formatDate(now, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");
// 5. 取得目前作動中的 Google 試算表
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 6. 將時間與匯率以「陣列」的方式,附加到試算表的最底層
sheet.appendRow([timeString, twdRate]);
// 7. 在 GAS 的執行日誌中印出成功訊息
Logger.log("成功!已將最新匯率寫入:" + twdRate);
} catch (error) {
// 錯誤處理:如果網路斷線或 API 壞掉,會在此報錯
Logger.log("發生嚴重的錯誤:" + error.toString());
}
}
關鍵操作步驟:
- 將 AI 產生的程式碼,完全複製。
- 回到你的 Google Apps Script 編輯器分頁。
- 把裡面原本預設的
function myFunction() { ... }刪掉,將新程式碼貼上去。 - 點擊編輯器上方的 「儲存 (磁碟機圖示)」 (或是按快捷鍵 Ctrl+S / Cmd+S)。
- 確認上方下拉選單選真的是
fetchExchangeRate函數,然後點擊 「執行 (Run)」 按鈕。
🚨 首次執行的權限審查 (新手必看的恐怖畫面)
當你第一次對這個腳本按下「執行」時,Google 會彈出一個名為「需要授權」的警告視窗。因為你的程式碼會去動你的試算表,甚至可能連到外部網站,Google 必須確認這是你本人授權的。
很多新手在這個步驟會被嚇到放棄,請嚴格跟著以下步驟做:
- 在彈出視窗點擊 「核對權限 (Review Permissions)」。
- 選擇你登入的 Google 帳號。
- 此時畫面會出現一個大大的紅色三角形,寫著「Google 尚未驗證這個應用程式」。別怕!因為這個應用程式是你三分鐘前自己用 AI 寫出來的,Google 當然還沒驗證過。
- 點擊左下角灰色的 「進階 (Advanced)」 字樣。
- 最下方會多出一行字,點擊 「前往『未命名專案』(不安全)」。
- 在最後一頁,列出了這個程式會擁有哪些權限(例如查看與編輯試算表、連線到外部服務),請大膽地點擊右下角的 「允許 (Allow)」。
審查通過後,程式就會開始正式運轉!
檢查你的試算表!見證自動化的魔法
趕快切換回你的「自動匯率追蹤器」Google 試算表分頁,看看發生了什麼事? 你會神奇地發現,A 欄憑空多出了一筆當前的時間,B 欄多出了一筆精準的美金匯率!
如果你再回到 GAS 介面,按第二次「執行」,試算表就會立刻再增加第二行資料!
恭喜你,你已經完成了人生中第一支自動化爬蟲腳本!透過 Vibe Coding,你甚至不需要了解 JSON.parse 到底是什麼原理,就能夠召喚出強大的雲端自動化工具。
🛠️ 常見錯誤與 AI 除錯指南 (Troubleshooting)
在 Vibe Coding 的過程中,AI 有時候也會犯錯。如果你在按下「執行」後,底下的「執行記錄 (Execution Log)」噴出了紅色的錯誤訊息,請使用以下的「除錯心法」:
心法:不要自己修,叫 AI 修!
請把你看到的紅色錯誤訊息(連同 Exception 等字眼)全部複製下來,然後貼回給 Cursor 或是 ChatGPT,並加上這段除錯咒語:
【超強除錯 Prompt】 我在 Google Apps Script 執行剛剛的程式碼時,遇到了以下的錯誤:
[請把你的紅色錯誤訊息貼在這裡,例如:TypeError: Cannot read properties of undefined (reading 'TWD')]請問這是什麼原因造成的?是 API 的網址已經失效了嗎?還是解析的結構不對? 請幫我修正這個錯誤,並給我一份更新後保證能跑的完整程式碼。
AI 看完錯誤訊息後,通常會恍然大悟地說:「啊!抱歉,這個 API 回傳的結構已經改了...」,並且會立刻給你正確的版本。這就是與 AI 結伴寫程式最迷人的地方。
在進階的商業應用中,我們還可以點擊左側的「時鐘圖示 (觸發條件 Triggers)」,設定讓這個腳本每天早上 8 點自動幫你執行一次。從此以後,你就獲得了一個永遠不用付薪水的免費機器人助理了!