AI 寫程式:從自然語言需求到 Apps Script 自動化
AI 寫程式可以先用自然語言描述資料來源、判斷規則與輸出位置,再交由 Gemini 產生 Apps Script 程式碼,放進實際執行環境測試與驗證,最後加入排程,變成每天自動運作的系統。贊贊小屋這次先以發票明細自動產生會計日記簿,再對照目前每天實際運作的 Search Console 戰情室日報,完整走一次從需求、程式碼到排程與授權的過程。

一、Excel 資料先轉成 Google 試算表
贊贊小屋原本的發票明細資料存放在一份名為「發票明細表TEST.xlsm」的 Excel 活頁簿,內含三張工作表:「發票明細表」「會科主檔」「日記簿」。在 Google 試算表開啟後選擇「儲存為 Google 試算表」,轉換後檔名變成「發票明細表TEST」,三張工作表原封不動保留,發票明細表的欄位包含日期、發票號碼、賣方名稱、統編、摘要、金額、費用類別與備註。
AI 寫程式以前,最先要確認的其實不是程式怎麼寫,而是資料來源在哪裡、欄位長什麼樣子、最後要把結果寫到哪裡。等這些資料結構確認之後,再補上判斷規則,就會形成「輸入資料 → 處理規則 → 輸出結果」的基本架構,之後不管請哪一個 AI 工具生成程式,都是先把這個架構說清楚,程式才有辦法動起來。



二、把會計需求直接說給 Gemini
贊贊小屋在 Gemini 中輸入的完整提示詞如下:
我的Google試算表有三個工作表:
第一張工作表「發票明細表」,欄位是:
日期 發票號碼 賣方名稱 統編 摘要 金額 費用類別 備註
第二張工作表「會科主檔」,欄位是:
原始類別 會計科目 科目代碼 財報類別 財報項目 說明 備註
第三張工作表「日記簿」,欄位是:
傳票日期 傳票編號 會計科目 科目代碼 傳票摘要 借方金額 貸方金額
希望以「發票明細表」作為原始資料,依照「會科主檔」作為會計科目,在「日記簿」自動生成傳票資料,幫我設計Apps Script程式。
這段話看起來只是一句普通的請求,但其實已經把程式需求的三個核心要素交代清楚了:資料來源是發票明細表,判斷依據是會科主檔,輸出位置是日記簿。AI 寫程式能不能一次到位,往往不是靠提示詞技巧,而是看使用者有沒有先把工作流程本身講明白,這也延續上一篇 AI 程式設計 的核心觀念:先從實際工作需求拆出真正需要的功能,再把已經想清楚的需求交給 AI 實作。


三、AI 寫程式:Gemini 把需求轉成 Apps Script
Gemini 收到需求後,直接產生一支完整的 Google Apps Script 程式,函數命名為 generateJournalEntries(),程式內容依序取得發票明細表、會科主檔與日記簿三張工作表,同時也附上操作提示:回到 Google 試算表,點選「擴充功能」再選擇「Apps Script」,把程式貼進去即可執行。
這一步屬於 AI 程式碼生成的部分,但只完成了 Gemini 負責的工作。真正的執行是在 Apps Script,資料則由 Google 試算表提供,三者是各自獨立的角色,不能把 Gemini 產生程式碼,直接等同於整個自動化已經完成。Apps Script 使用 JavaScript 為基礎,但這篇文章的重點不是逐行學語法,而是先看懂需求如何變成一支可以執行的程式;如果想先熟悉 Apps Script 編輯器、函式與執行紀錄,可以另外參考贊贊小屋的 Google Apps Script 教學。



四、執行程式,驗證會計日記簿是否真的產生
把 Gemini 產生的程式貼入 Apps Script 編輯器後,選取 generateJournalEntries 並按下執行,程式依序讀取三張工作表。切回日記簿分頁,原本空白的傳票日期、傳票編號、會計科目、科目代碼、傳票摘要、借方金額與貸方金額欄位,已經自動填入資料,六筆發票各自產生借貸兩筆分錄,總共 12 筆。例如其中一筆把旅費(科目代碼 6113)記為借方 1,023 元,同時把應付帳款(科目代碼 2143)記為貸方 1,023 元。
AI 說程式已經完成,只代表它產出了一個答案,真正能不能算數,要看資料有沒有依照需求確實寫進日記簿。這也是 AI 寫程式時容易被忽略的一步,程式執行完不代表任務就結束,還需要回頭檢查實際產生的結果是否正確。



五、Apps Script 也有執行時間與配額限制
Apps Script 的執行項目紀錄可以看到每次執行的函式名稱、類型、開始時間、持續時間與狀態,畫面中 onOpen 執行約 0.529 秒後完成。Google 官方文件目前列出的指令碼執行階段上限為每次 6 分鐘,個人 Google 帳戶與 Google Workspace 帳戶皆相同。
這一節提醒的是,AI 可以很快生成一大段程式,但程式最後仍然要放進一個有限制的執行環境裡運作,不能假設它可以無限制地處理工作。AI 寫程式除了要問程式怎麼寫,也要問它在哪裡執行、一次能跑多久、會用掉哪些額度,這也是後面把程式改成固定排程時,需要一起考慮的執行條件。



六、從單次程式走到自動化工作流程
贊贊小屋目前實際使用的 Apps Script 專案名稱是「Search Console 情報系統」,裡面包含多個函數,例如 setupSystem、runDailyLite、fetchDailySearchConsoleData、runDailyPipeline、runDailyAnalysisOnly、recoverLatestDailyReport,整體流程是從 Search Console 取得資料,交由 Apps Script 整理分析,產生每日摘要後寄出 Gmail。每天收到的信件標題會顯示成「贊贊小屋戰情室日報|Search Console|資料日期」,信件中附上資料日期、執行模式、產生時間與當日摘要。
這個案例跟前面的會計分錄案例最大的差別,在於會計案例需要人手動按下執行;Search Console 情報系統則已經接進實際工作流程,程式會依照設定自動執行、產生結果,再把摘要送到使用者面前。AI 寫程式的價值,不只是產生一段可以動的程式碼,而是能不能真正接進日常工作,持續產生使用者用得到的成果。



七、排程決定何時執行,授權決定能做什麼
Apps Script 的執行紀錄顯示 runDailyLite 這個函數在 8 月 24 日到 8 月 29 日每天都由時間驅動觸發,固定在早上 8 點 39 分左右自動執行,不需要每天手動開啟 Google 試算表、進入 Apps Script、找到函式再按執行。另一張畫面則顯示 Apps Script 出現「需要授權」的提示;依照 Google Apps Script 授權說明,Apps Script 會依程式使用的 Google 服務判斷所需 OAuth 權限範圍,如果缺少必要授權,就會要求使用者授予權限。
排程只解決了什麼時候自動跑的問題,程式要讀取 Google 試算表、連接 Search Console、寄送 Gmail,還需要對應的帳號權限才能真的動起來。自動化程度愈高,程式能接觸到的資料範圍通常也愈大,因此 AI 寫程式到了自動化這一步,一定會碰到權限與安全的問題,程式能做什麼取決於程式碼本身,但程式被允許做什麼,則取決於授權範圍。



程式碼只是中間產品,真正的成果是工作自己完成
以前提到寫程式,贊贊小屋的注意力多半放在程式碼本身寫得對不對、語法熟不熟。這次從發票資料一路做到日記簿,再回頭看每天自動送進 Gmail 的 Search Console 日報,才更清楚地感覺到:程式碼其實只是工作流程裡的一個中間產品。真正有價值的不是 AI 幫忙寫了多少行程式,而是需求有沒有被正確理解、結果能不能驗證,以及這套流程最後能不能穩定地自己工作。
這也讓贊贊小屋重新理解「AI 寫程式」這件事。以前的門檻常常是先學語法,再慢慢把想法寫成程式;現在可以反過來,先把工作需求講清楚,再利用 AI 把它轉成可以測試的版本。使用者真正需要練習的,逐漸從「每一行程式要怎麼寫」,轉成「我要解決什麼問題、資料在哪裡、結果怎麼驗證、哪些權限可以交給程式」。AI 把寫程式的門檻降低了,但也把「需求判斷、結果驗證與權限管理」的重要性往前推,這幾件事反而成了使用 AI 開發工具時更需要學會的能力。
Google Apps Script 的優勢之一,是不需要自行維護程式執行用的伺服器環境,只要有瀏覽器與 Google 帳號,就能快速把試算表、Gmail、Search Console 等服務串在一起;但相對地,程式最終運行在 Google 控制的遠端環境裡,執行時間、配額與帳號授權都不是使用者能直接掌控的部分。贊贊小屋實際維護這套自動排程時,曾遇到程式完全沒有修改、也已經正常自動寄信多日,卻突然停止執行,需要重新授權後才恢復正常。依照 Google Apps Script 授權說明,Apps Script 並不會因為經過某個固定時間就自動要求重新驗證,觸發條件的自動執行也不會主動跳出重新驗證的提示;但這只代表 Google 沒有把「定期到期」設計進這套機制裡,並不代表授權實務上保證不會中斷。就贊贊小屋實際觀察到的情況,程式沒有任何異動仍然出現過這類狀況,原因目前無法從外部完全查證。
配額與執行限制也是類似的處境。Google 官方文件已經明白提醒,Apps Script 的配額與限制可能隨時刪除、降低或調整,不另行通知。Apps Script 發生問題時,Google 提供開發者社群、Issue Tracker、服務狀態資訊等支援管道,Google Workspace 管理員另可聯絡開發者支援;不過對一般使用者而言,實際排查程式停止、自動觸發失敗或授權異常,仍然相當依賴自己從執行紀錄、錯誤訊息與官方文件找出原因。程式碼和資料邏輯可以自己檢查、自己修改,但授權狀態、配額規則與 Google 後端服務本身,終究是使用者無法完全掌控的遠端環境。對於只是個人小工具,這種不確定性通常不構成太大問題;但如果某套工具已經變成每天依賴的工作流程,這塊原因未必能完全查明,但確實可能發生的風險,就是技術選型時必須認真評估的一環。
以前遇到大型服務商的限制,一般使用者能做的通常只是反映意見、耐心等待官方調整;依照贊贊小屋過去與 Google、Microsoft 等大型服務商打交道的經驗,這類全球性服務不太會針對個別使用者的需求做出回應與調整。Apps Script 對一般 Google 帳戶即可使用,不需要另外購買伺服器或程式執行平台;但對一般個人使用者而言,遇到特定自動化流程失效時,仍很難期待大型服務商針對自己的特殊使用情境逐一修改產品。以前遇到工具不好用,往往只能將就使用,或者改用其他現成的付費方案。
AI 時代多了一個選項:與其被動等待第三方工具變得更符合自己的需求,或只能改用另一套現成服務,現在一般使用者也可以在 AI 協助下自己開發。這正是贊贊小屋這堂課想建立的方向——非工程師、零基礎,也能把自己的工作需求轉成程式,不必永遠受限於現成工具提供了哪些功能。
本機軟體當然也有更新、權限與相容性問題,而且只要程式仍要存取 Gmail、Search Console 等 Google 服務,就還是需要遵守相關 API 與授權規則;但把程式改成 Windows EXE 或 macOS APP 之後,至少程式本身、檔案、執行時間、排程與除錯環境,有更大一部分可以掌握在自己的電腦上,不再連程式「在哪裡跑、一次能跑多久、何時啟動」都交給外部平台決定。這也是贊贊小屋後來把 AI 程式設計課程延伸到本機軟體的原因。Google Apps Script 適合快速串接 Google 生態,本機程式則適合需要更多執行控制權的工作;真正重要的不是哪一種工具比較好,而是使用者開始有能力依照自己的需求選擇,甚至自己做出第三種方案。Search Console 戰情室日報正是贊贊小屋自己實際在用的案例,也因此把這套自動化實戰排進 AI 程式設計 課程的第二篇內容。
學會計、學Excel、學習AI工具,歡迎加入贊贊小屋社群。
Claude Code 教學、ChatGPT怎麼用?、ChatGPT Excel教學、ChatGPT寫ExcelVBA、Gemini是什麼?、Notion教學、AI對會計的影響。
贊贊小屋AI課程:AI 程式設計、OpenClaw AI 代理、Codex 網站、Claude Code 實戰、ChatGPT課程、AI工具全攻略、Notion課程。
相關文章:

