n8n 報價單自動化|中小企業客戶管理完整教學
更新於 2026年2月11日
📥 工作流 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 畢竟不是專業的資料庫,當客戶和品項數量太多的時候,管理起來會比較吃力。但對大部分台灣中小企業來說,這套方案已經綽綽有餘了。
「講破沒價值」的核心邏輯
我在教學的時候常說:「其實這個講破沒價值,沒有很難。」報價單自動化的邏輯其實很直覺:
- 從 Google Sheets 讀取公司資料、客戶資料、報價品項
- 根據「單號」把散落的品項整理成一張一張的報價單
- 用 HTML 模板填入資料,透過 Gotenberg 轉成 PDF
- 用 Gmail 逐一寄出,附帶 PDF 報價單
- 寄完後更新狀態,避免重複寄送
「其實沒有很複雜,但是很多步數呢,需要有點小巧思才能做好。」這句話是我對這套系統最真實的評價——每一步都不難,但要把它們串起來需要一點設計思維。
三件必須注意的事
我在影片裡面特別強調了三件要注意的事情:
第一件:狀態追蹤。「寄完信以後記得要把時間跟結果記錄在這裡,讓你知道說我有寄信。」狀態變成 Check,代表下次執行的時候這張報價單就不會再寄了。「所以要有個狀態的確認,這非常重要。」
第二件:HTML 報價單範本。我做了一個 HTML 的報價單範本,所有的設定都是去更換裡面的公司名稱或客戶名稱,還有報價單日期。你不用自己從頭寫,「就全部把它換掉,你就照抄,下載這個範本直接用。」
第三件:自動寄信的設定。用 Loop Over Items 來逐一處理每封信,記得加一個 Delay,「就不要這麼快,因為那個 Google 的 API 就會擋你。」
自動化流程實作步驟
接下來我一步一步帶你走完整個建置流程。我在影片裡面把它分成四個大步驟來講解。
Step 1:準備 Google Sheets 三張資料表
首先你需要建立三張表,這是整個系統的資料核心。我在影片裡面就是照著這個結構來做的。
資料表 1:公司資料
這是你自己公司的基本資訊,「第一個是把自己的公司照著項目打上去,這很簡單,你的基本公司的資料。」
| 欄位 | 說明 | 範例 |
|---|---|---|
| 公司名稱 | 你的公司全名 | 宏達科技有限公司 |
| 統一編號 | 公司統編 | 12345678 |
| 地址 | 公司地址 | 台北市信義區… |
| 聯絡電話 | 業務電話 | 02-12345678 |
| 聯絡人 | 業務負責人 | Alex |
資料表 2:客戶資料
「再來就是你的客戶歸檔」,每個客戶一列,記錄對方公司的完整資訊。
| 欄位 | 說明 | 範例 |
|---|---|---|
| 客戶代碼 | 唯一識別碼 | C001 |
| 公司名稱 | 客戶公司全名 | 新晨國際貿易 |
| 統一編號 | 客戶統編 | 87654321 |
| 聯絡人 | 窗口姓名 | 李建華 |
| 收件信箱 | contact@example.com |
資料表 3:報價品項
這是最重要的一張表。「這邊全部都是用這個單號來做你的確認。」同一個單號代表同一張報價單,一個單號可以有多個品項。
| 報價單號 | 客戶代碼 | 品項名稱 | 規格 | 數量 | 單價 | 狀態 | 寄送時間 | 寄送結果 |
|---|---|---|---|---|---|---|---|---|
| Q001 | C001 | 網頁設計 | 基礎方案 | 1 | 50000 | False | ||
| Q001 | C001 | 主機代管 | 年費 | 1 | 12000 | False | ||
| Q001 | C001 | SSL 憑證 | 年費 | 1 | 3000 | False | ||
| Q002 | C002 | 系統整合 | 標準方案 | 1 | 80000 | False |
重點是這個「狀態」欄位:False 代表還沒寄,True 代表已經寄過了。「我們只讀什麼?這個狀態這樣子才會讀,如果 True 就不讀。」這是防止重複寄送的關鍵機制。
Step 2:n8n 工作流 — 資料讀取與整理
這是整個流程中比較技術性的部分。我在影片裡有完整示範。
讀取三張資料表
n8n 工作流的第一步是把三張表的資料全部讀進來。「你先不要想那麼多,全部讀進來。」
- 第一個 Google Sheets 節點:讀取公司資料
- 第二個 Google Sheets 節點:讀取客戶資料
- 第三個 Google Sheets 節點:讀取報價品項(只讀狀態為 False 的)
然後用 Merge 節點把所有資料合併,「每一格全部都被拉進來了。」
根據單號整理報價單
「它會根據資訊把每一家的報價單根據單號來生成物件,注意喔是根據單號。」這是整個系統的核心邏輯。
我在影片裡面示範的是 19 個品項最後整理成 6 張報價單。Code Node 會做幾件事:
- 讀取所有資料,只處理狀態為 False(沒有勾選)的品項
- 按照報價單號分組
- 每個單號計算品項小計、稅額、總金額
- 輸出結構化的 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 的部署流程:
- 建立一個新服務,選擇 Docker 版本
- 映像檔使用
gotenberg/gotenberg:8(第八版) - Port 設定為 80
- 加入啟動指令
- 點擊部署,等它跑完
- 在網路設定裡複製內部服務的 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 轉檔 | 手動另存 PDF | Gotenberg 2 秒自動轉檔 |
| 防重複寄送 | 靠記憶 | 狀態欄自動標記 True |
| 適用規模 | 3-5 家就很累 | 30 家以下都輕鬆 |
| 成本 | 人力時間成本高 | 工具全部免費或接近免費 |
重點整理
-
報價單自動化的核心是三張 Google Sheets + n8n + Gotenberg + Gmail。把公司資料、客戶資料、報價品項分開管理,用報價單號串聯所有資訊。我提供的工作流範本可以直接下載使用。
-
根據「單號」分組是整個系統最關鍵的邏輯。同一個單號的品項會被合併成一張報價單,自動計算小計和稅額。「注意喔是根據單號」,這個概念一定要搞清楚。
-
狀態追蹤機制可以防止重複寄送和漏單。寄完信後自動把狀態改成 True、記錄時間和結果,「代表下次的時候我這個報價單它已經完成了不要再寄了。」
-
Gotenberg 是 HTML 轉 PDF 的神器。免費開源、速度快、支援批次處理。用 Zeabur 部署最簡單,Docker 自架也不難。
-
不會寫 Code 也沒關係,善用 AI 工具。HTML 模板可以用 ChatGPT 或 Gemini 幫你調整風格,n8n 的 Code Node 邏輯我也幫大家寫好了。「善用 AI 的工具非常重要。」
-
這套系統適合 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 實力又變強囉。」
如果你想實際動手做,我建議你按照這個順序:
- 先建立 Google Sheets 三張表 — 把公司資料、客戶資料、報價品項的結構弄對,後面就順了
- 下載我的 n8n 工作流範本 — 不用從頭建,直接匯入修改就好
- 架設 Gotenberg — 用 Zeabur 最簡單,三分鐘搞定
- 用自己的資料測試 — 先寄給自己的信箱確認格式沒問題,再正式使用
想深入學習更多 n8n 自動化技巧?
- 觀看完整教學影片:YouTube EP43 — 中小企業報價單自動化(含完整操作 Demo 和 Gotenberg 架設示範)
- 加入學習社群:Skool 雲端方程式 Cloud F1(免費加入,Classroom 裡面有完整的文件說明和 JSON 工作流下載,LINE 群可以各種溝通,Skool 有各種影片和免費資源)
- 下載 n8n 模板:GitHub 報價單自動化模板
有問題歡迎在社群裡發問,我跟其他學員都會幫你解答!
相關資源
內部資源
- n8n 零基礎完整教學 - 從安裝到上線,一次搞懂 n8n
- n8n 發票自動化 - 報價單的下一步:自動開發票
- n8n 證書自動化 - 類似邏輯,應用在課程證書生成
- n8n 表單名單磁鐵 - Google Sheets 整合表單,自動收集客戶資料
- n8n 自動化指南 2026 - 中小企業導入自動化的完整路徑
外部資源
- Gotenberg 官方文件 - PDF 轉檔服務完整 API 說明
- n8n 官方文件 - n8n 完整技術文件
本文改編自 YouTube 影片 EP43,由 Alex Hsieh 撰寫。文中所有程式碼與工作流範例皆可在 GitHub 下載使用。最後更新:2026-02-11