n8n 報價單自動化|中小企業客戶管理完整教學

更新於 2026年2月11日

n8n 報價單自動化

📥 工作流 JSON 下載GitHub 範例庫 | 💬 社群討論Skool 雲端方程式 Cloud F1

專業導讀

最近有朋友問我:「Alex,可不可以用 n8n 來解決一些中小企業客戶的管理?搞定五家公司的報價單,一次搞定幫我寄信。」我聽到這個需求,心想這不就是 n8n 的拿手好戲嗎?

所以我做了一套完整的報價單自動化系統。報價單裡面通常會有三種資訊:你自己公司的資訊、客戶的資訊、還有報價的品項資訊。我的做法是把這三份資料全部放在 Google Sheets 裡面,然後用 n8n 一鍵啟動,「直接最後無痛的產生所有的報價單」,自動寄信給每一家客戶。

我在影片裡面實際示範過,按下執行後,n8n 會去抓所有的資訊、開始轉換、自動寄信。最後你打開信箱,就會看到六封報價單已經寄出去了,每一封都有對應的客戶資訊、品項明細和正確的金額。這套系統特別適合客戶數量在 30 家以下的中小企業使用。

本文重點: 用 n8n 搭配 Google Sheets 和 Gotenberg,打造報價單從生成到寄發的完整自動化系統。

你將學到

  • Google Sheets 三張資料表的設計方法(公司、客戶、報價品項)
  • 用 n8n 的 Code Node 根據單號自動整理報價資料
  • Gotenberg 開源服務:HTML 轉 PDF 的核心技術
  • 用 Loop Over Items 逐一寄送 Email 附帶 PDF 報價單
  • 狀態追蹤機制:避免重複寄送和漏單

什麼是報價單自動化?

報價單自動化是指用 n8n 串接 Google Sheets(資料來源)、HTML 模板(報價格式)、Gotenberg(HTML 轉 PDF)與 Gmail(自動寄信),讓報價單從資料讀取、格式生成、PDF 轉檔到寄信全程自動完成,一次搞定多家公司的報價流程。

我在影片裡面實際 Demo 了這套系統的效果:「你就可以看到我們收到了六個報價單,點一下,它就會告訴你對應的資訊跟多少錢。」點開來看,宏達科技、新晨國際貿易,每一家的報價金額、品項明細都是自動計算出來的,包含 5% 的稅也自動幫你算好。

對中小企業來說,報價單自動化的核心價值不只是「快」,更重要的是「不會錯」。手動複製貼上最怕的就是打錯客戶名稱、算錯金額、漏寄附件。我這套系統讓每個環節都有記錄,出錯率降到接近零。


Alex 的實戰觀察

我在輔導中小企業自動化的過程中,發現一個有趣的現象:大部分老闆不是不想自動化,而是不知道從哪裡開始。他們以為要買 CRM 系統、請工程師、花大錢,結果就一直手動處理。

但其實這套報價單自動化根本不需要寫程式。我在影片裡面特別說了:「這邊你不用覺得很難,不知道怎麼寫,其實你也可以用 ChatGPT 來問它怎麼去計算。」用到的工具都是免費或接近免費的:Google Sheets、Gmail、n8n(自架免費)、Gotenberg(Docker 架設免費)。

我對適用範圍的建議

我在影片裡面有特別提醒:「這個建議你最好是 30 個人以下的客戶再來使用。」為什麼?因為 Google Sheets 畢竟不是專業的資料庫,當客戶和品項數量太多的時候,管理起來會比較吃力。但對大部分台灣中小企業來說,這套方案已經綽綽有餘了。

「講破沒價值」的核心邏輯

我在教學的時候常說:「其實這個講破沒價值,沒有很難。」報價單自動化的邏輯其實很直覺:

  1. 從 Google Sheets 讀取公司資料、客戶資料、報價品項
  2. 根據「單號」把散落的品項整理成一張一張的報價單
  3. 用 HTML 模板填入資料,透過 Gotenberg 轉成 PDF
  4. 用 Gmail 逐一寄出,附帶 PDF 報價單
  5. 寄完後更新狀態,避免重複寄送

「其實沒有很複雜,但是很多步數呢,需要有點小巧思才能做好。」這句話是我對這套系統最真實的評價——每一步都不難,但要把它們串起來需要一點設計思維。

三件必須注意的事

我在影片裡面特別強調了三件要注意的事情:

第一件:狀態追蹤。「寄完信以後記得要把時間跟結果記錄在這裡,讓你知道說我有寄信。」狀態變成 Check,代表下次執行的時候這張報價單就不會再寄了。「所以要有個狀態的確認,這非常重要。」

第二件:HTML 報價單範本。我做了一個 HTML 的報價單範本,所有的設定都是去更換裡面的公司名稱或客戶名稱,還有報價單日期。你不用自己從頭寫,「就全部把它換掉,你就照抄,下載這個範本直接用。」

第三件:自動寄信的設定。用 Loop Over Items 來逐一處理每封信,記得加一個 Delay,「就不要這麼快,因為那個 Google 的 API 就會擋你。」


自動化流程實作步驟

接下來我一步一步帶你走完整個建置流程。我在影片裡面把它分成四個大步驟來講解。

Step 1:準備 Google Sheets 三張資料表

首先你需要建立三張表,這是整個系統的資料核心。我在影片裡面就是照著這個結構來做的。

資料表 1:公司資料

這是你自己公司的基本資訊,「第一個是把自己的公司照著項目打上去,這很簡單,你的基本公司的資料。」

欄位說明範例
公司名稱你的公司全名宏達科技有限公司
統一編號公司統編12345678
地址公司地址台北市信義區…
聯絡電話業務電話02-12345678
聯絡人業務負責人Alex

資料表 2:客戶資料

「再來就是你的客戶歸檔」,每個客戶一列,記錄對方公司的完整資訊。

欄位說明範例
客戶代碼唯一識別碼C001
公司名稱客戶公司全名新晨國際貿易
統一編號客戶統編87654321
聯絡人窗口姓名李建華
Email收件信箱contact@example.com

資料表 3:報價品項

這是最重要的一張表。「這邊全部都是用這個單號來做你的確認。」同一個單號代表同一張報價單,一個單號可以有多個品項。

報價單號客戶代碼品項名稱規格數量單價狀態寄送時間寄送結果
Q001C001網頁設計基礎方案150000False
Q001C001主機代管年費112000False
Q001C001SSL 憑證年費13000False
Q002C002系統整合標準方案180000False

重點是這個「狀態」欄位:False 代表還沒寄,True 代表已經寄過了。「我們只讀什麼?這個狀態這樣子才會讀,如果 True 就不讀。」這是防止重複寄送的關鍵機制。

Step 2:n8n 工作流 — 資料讀取與整理

這是整個流程中比較技術性的部分。我在影片裡有完整示範。

讀取三張資料表

n8n 工作流的第一步是把三張表的資料全部讀進來。「你先不要想那麼多,全部讀進來。」

  1. 第一個 Google Sheets 節點:讀取公司資料
  2. 第二個 Google Sheets 節點:讀取客戶資料
  3. 第三個 Google Sheets 節點:讀取報價品項(只讀狀態為 False 的)

然後用 Merge 節點把所有資料合併,「每一格全部都被拉進來了。」

根據單號整理報價單

「它會根據資訊把每一家的報價單根據單號來生成物件,注意喔是根據單號。」這是整個系統的核心邏輯。

我在影片裡面示範的是 19 個品項最後整理成 6 張報價單。Code Node 會做幾件事:

  1. 讀取所有資料,只處理狀態為 False(沒有勾選)的品項
  2. 按照報價單號分組
  3. 每個單號計算品項小計、稅額、總金額
  4. 輸出結構化的 JSON 物件

「裡面的 Code 比較複雜,我們全部把它列在這裡。大家如果覺得無聊就不用看這樣子。」但我已經幫大家寫好了,你下載我的工作流範本就可以直接用。

整理完的 JSON 會包含:報價單號、日期、客戶資訊(公司名稱、統編、聯絡人)、品項明細(名稱、規格、數量、單價、小計),以及一個 Valid 欄位確認資料完整性。「Valid 是 True 就是說它確認報價單整理 OK。」

Step 3:HTML 轉 PDF(Gotenberg)

「我們等一下會講一下這個 Gotenberg,它這個軟體會幫你把報價單從 HTML 轉成 PDF。」

HTML 報價單模板

我做了一個 HTML 的報價單模板,「你就去把它換掉,把聯絡人全部換掉,其實這個講破沒價值,沒有很難。」具體做法就是在 HTML 裡面用變數佔位,然後 n8n 的 Code Node 會把實際資料填進去。

如果你不會寫 HTML 也沒關係。我在影片裡面示範了一個技巧:「你也可以去用 ChatGPT 或者是 Gemini 來展示。」把我的 HTML 模板貼給 AI,跟它說「請換個風格」,它就會幫你調整報價單的設計。「善用 AI 的工具非常重要,四步就講完。」

HTML 轉檔案

把 HTML 報價單轉成一個 index.html 檔案,然後透過 HTTP Request 節點呼叫 Gotenberg API:

POST {gotenberg-url}/forms/chromium/convert/html
Content-Type: multipart/form-data

- Files: index.html
- singlePage: true(印出來只有一頁)

「有沒有看到這個變 PDF?」轉檔完成後,你會得到一個 PDF 檔案。

報價單命名

Gotenberg 轉出來的檔案名稱是一串很長的隨機字元,「不知道是什麼東西的檔案」。所以我會加一個步驟把它改名,改成「報價單-單號-公司名稱.pdf」這樣好辨識的格式。「你是拿你的名稱讓客戶知道說,是宏達科技寄過來報價單。」

Step 4:自動寄信與狀態更新

Email 寄送

用 Loop Over Items 逐一處理每封信。信件內容包含客戶名稱、報價單號、金額摘要,附件就是剛才生成的 PDF。

「在這邊其實你可以稍微加一下一個 Delay,就不要這麼快,因為那個 Google 的 API 就會擋你。」

「客戶收到這樣子的報價單,基本上不會有什麼問題,他會覺得是一個很制式的——制式就是說大家都覺得大概長這樣。」你也可以在 HTML 裡面加公司 Logo,「當然都可以做得到沒有問題。」

狀態更新

寄完每封信後,n8n 會自動更新 Google Sheets:

  • 把狀態從 False 改成 True(已勾選)
  • 記錄寄送時間
  • 記錄寄送結果(OK 或失敗)

「六個報價單裡面,其實你要更新 12 項。為什麼?因為你看這裡,總共有 12 項。所以你要根據這個 Row 去修改它的狀態,這是比較難的,我幫大家寫完了。」

補充:Gotenberg 架設方法

Gotenberg 有兩種架設方式,我在影片裡面都有示範。

方案 1:Zeabur 一鍵部署

我在影片裡面實際 Demo 了 Zeabur 的部署流程:

  1. 建立一個新服務,選擇 Docker 版本
  2. 映像檔使用 gotenberg/gotenberg:8(第八版)
  3. Port 設定為 80
  4. 加入啟動指令
  5. 點擊部署,等它跑完
  6. 在網路設定裡複製內部服務的 URL,貼到 n8n 的 HTTP Request 節點

注意一個重點:Gotenberg 的 URL 是「暴露給同一個專案的其他服務」,只有你 Zeabur 專案內的其他服務(比如 n8n)才碰得到,「其他人都碰不到」,這是一個安全性的設計。

方案 2:Docker 自架

如果你本來就有伺服器:

docker run -d \
  --name gotenberg \
  -p 3000:3000 \
  gotenberg/gotenberg:8

比較分析:手動 vs n8n 自動化

維度手動處理n8n 自動化
處理時間45 分鐘/份按一次鍵完成 6 份
出錯率約 15%(打錯字、算錯金額)接近 0%(含自動稅額計算)
可追蹤性靠記憶或紙本記錄自動記錄寄送時間、結果、狀態
報價格式每次手動調整,格式不統一HTML 模板統一,還能用 AI 換風格
PDF 轉檔手動另存 PDFGotenberg 2 秒自動轉檔
防重複寄送靠記憶狀態欄自動標記 True
適用規模3-5 家就很累30 家以下都輕鬆
成本人力時間成本高工具全部免費或接近免費

重點整理

  1. 報價單自動化的核心是三張 Google Sheets + n8n + Gotenberg + Gmail。把公司資料、客戶資料、報價品項分開管理,用報價單號串聯所有資訊。我提供的工作流範本可以直接下載使用。

  2. 根據「單號」分組是整個系統最關鍵的邏輯。同一個單號的品項會被合併成一張報價單,自動計算小計和稅額。「注意喔是根據單號」,這個概念一定要搞清楚。

  3. 狀態追蹤機制可以防止重複寄送和漏單。寄完信後自動把狀態改成 True、記錄時間和結果,「代表下次的時候我這個報價單它已經完成了不要再寄了。」

  4. Gotenberg 是 HTML 轉 PDF 的神器。免費開源、速度快、支援批次處理。用 Zeabur 部署最簡單,Docker 自架也不難。

  5. 不會寫 Code 也沒關係,善用 AI 工具。HTML 模板可以用 ChatGPT 或 Gemini 幫你調整風格,n8n 的 Code Node 邏輯我也幫大家寫好了。「善用 AI 的工具非常重要。」

  6. 這套系統適合 30 家客戶以下的中小企業。超過這個規模建議考慮更專業的 CRM 或 ERP 系統。但對大部分台灣中小企業來說,這套方案已經非常夠用。


常見問題 FAQ

報價品項很多的時候怎麼處理?

我在影片裡面示範的例子就是 19 個品項整理成 6 張報價單。系統會根據「報價單號」自動分組,不管一張報價單有 3 個品項還是 10 個品項,都能正確處理。Code Node 會自動計算每個品項的小計、加總、含稅金額。

重點是資料表的設計:同一張報價單的品項要用同一個「報價單號」。「所以假設這個單號裡面有三個廠商都是一樣的,裡面有三個品項,好,價錢數量都把它調整好。」

Gotenberg 轉出來的 PDF 格式不好看怎麼辦?

我在影片裡面示範了一個很實用的技巧:把你的 HTML 模板丟給 ChatGPT 或 Gemini,跟它說「請換個風格」。AI 會幫你調整 CSS 樣式,改完後再貼回 n8n 的 HTML 模板裡面就好了。

另外,我在呼叫 Gotenberg API 的時候有設定 singlePage: true,「就是說印出來只有一頁」。如果你的報價單品項太多超過一頁,可以把這個設定拿掉,讓它自動分頁。

Google API 寄信會被限制嗎?

會!我在影片裡面特別提醒:「在這邊其實你可以稍微加一下一個 Delay,就不要這麼快,因為那個 Google 的 API 就會擋你。」Google Gmail API 有每日寄送上限(免費帳號約 500 封/天),而且如果短時間內寄太多封,會被暫時封鎖。

我的做法是在 Loop Over Items 裡面加一個 Wait 節點,每封信之間等待 3-5 秒。這樣就算一次寄 30 封也不會有問題。

報價單可以加公司 Logo 嗎?

當然可以。「你也可以在 HTML 裡面加你的 Logo,當然都可以做得到沒有問題。」做法是在 HTML 模板裡面用 <img> 標籤引入你的 Logo 圖片。如果 Logo 是放在網路上的(比如你公司官網),直接用 URL 引入就好。

客戶收到的報價單「基本上不會有什麼問題,他會覺得是一個很制式的」,看起來就跟一般公司寄出的報價單一樣專業。你也可以加上「貴司、親啟」這類比較正式的用語。

這套系統可以處理不同幣別嗎?

可以,但需要在 Google Sheets 加一個「幣別」欄位,然後在 Code Node 裡面根據幣別做匯率換算和格式化。我在基礎版本裡沒有做這個功能,因為大部分中小企業只需要台幣報價。如果你有外幣需求,可以串接台灣銀行的匯率 API 來自動更新匯率。

狀態更新失敗怎麼辦?

「六個報價單裡面,其實你要更新 12 項。」如果更新失敗,通常是因為 Google Sheets API 的速率限制。我的做法是在狀態更新前也加一個 Delay,讓每次更新之間有間隔。

另外,我在 Code Node 裡面有加入錯誤處理邏輯,如果某一筆更新失敗,不會影響其他筆的處理。你可以事後在 Google Sheets 裡面手動檢查哪些沒有標記成 True,再手動補上。


下一步行動

🎓 想更有系統地學會這些技巧?AI 職場工作術(雲端方程式 Cloud F1 旗艦課程) 看看完整的實作路徑。

看完這篇教學,你的 AI 實力又變強了!我在影片結尾也說過:「你的 AI 實力又變強囉。」

如果你想實際動手做,我建議你按照這個順序:

  1. 先建立 Google Sheets 三張表 — 把公司資料、客戶資料、報價品項的結構弄對,後面就順了
  2. 下載我的 n8n 工作流範本 — 不用從頭建,直接匯入修改就好
  3. 架設 Gotenberg — 用 Zeabur 最簡單,三分鐘搞定
  4. 用自己的資料測試 — 先寄給自己的信箱確認格式沒問題,再正式使用

想深入學習更多 n8n 自動化技巧?

有問題歡迎在社群裡發問,我跟其他學員都會幫你解答!


相關資源

內部資源

外部資源


本文改編自 YouTube 影片 EP43,由 Alex Hsieh 撰寫。文中所有程式碼與工作流範例皆可在 GitHub 下載使用。最後更新:2026-02-11

想把這篇學到的用進日常工作?

「AI 職場工作術」課程把這類實戰經驗整理成一步步的教學,帶你系統化練出跟 AI 協作的產能。

看 AI 職場工作術課程 →

本文作者:Alex Hsieh,SRE / DevOps 背景出身,現為企業 AI 導入顧問,也是「AI 相談室」課程講師。專注把 AI 自動化真正落地到企業日常流程,而不是停留在 Demo。

目錄
  1. 專業導讀
  2. 你將學到
  3. 什麼是報價單自動化?
  4. Alex 的實戰觀察
  5. 我對適用範圍的建議
  6. 「講破沒價值」的核心邏輯
  7. 三件必須注意的事
  8. 自動化流程實作步驟
  9. Step 1:準備 Google Sheets 三張資料表
  10. Step 2:n8n 工作流 — 資料讀取與整理
  11. Step 3:HTML 轉 PDF(Gotenberg)
  12. Step 4:自動寄信與狀態更新
  13. 補充:Gotenberg 架設方法
  14. 比較分析:手動 vs n8n 自動化
  15. 重點整理
  16. 常見問題 FAQ
  17. 報價品項很多的時候怎麼處理?
  18. Gotenberg 轉出來的 PDF 格式不好看怎麼辦?
  19. Google API 寄信會被限制嗎?
  20. 報價單可以加公司 Logo 嗎?
  21. 這套系統可以處理不同幣別嗎?
  22. 狀態更新失敗怎麼辦?
  23. 下一步行動
  24. 相關資源
  25. 內部資源
  26. 外部資源