n8n x Google Sheets:WooCommerce 價格自動化終極解方
厭倦了購物節前夕在 WooCommerce 後台手動更新數百個商品價格嗎?傳統外掛笨重且缺乏彈性,更帶來安全性與權限管理難題。資深工程師推薦更優雅的架構:利用 Google Sheets 打造安全的「價格儀表板」,並以 n8n 作為 24 小時不間斷的自動化中介層。這套流程將資料層與應用層解耦,提供極致的協作便利性、版本控制與高安全性。從此,改價格不再是惡夢,而是喝咖啡的愜意時光。別讓重複性工作拖垮您的效率!立即導入這套企業級自動化架構,解放您的團隊潛能,將寶貴時間投入到真正有價值的策略規劃上!
Google Sheets 改價格,WooCommerce 就同步?別再手動點到手軟!n8n 打造你的『雲端價格儀表板』
嗨,我是浪花科技的資深工程師 Eric。每當購物節前夕,看著行銷團隊為了幾百個、甚至幾千個商品的促銷價格,在 WooCommerce 後台一個一個點擊、修改、儲存,我的工程師雷達就會嗡嗡作響。那種重複性高、容易出錯、又極度耗時的工作,簡直是生產力的黑洞。心裡總有個聲音在吶喊:「這流程太不科學了!一定有更好的方法!」
你可能會說:「Eric,不是有很多 WooCommerce 大量編輯外掛嗎?」沒錯,市面上的確有解決方案,但它們往往伴隨著幾個工程師看了會皺眉的問題:笨重的 UI、昂貴的年費、權限控管不易(你真的敢讓實習生碰核心的商品編輯器嗎?),而且最重要的是,你被綁死在外掛的框架裡,缺乏彈性。
今天,我要分享一個更優雅、更具彈性,而且完全在自己掌控之下的解決方案。我們將利用 Google Sheets 作為我們直觀、易於協作的「價格儀表板」,並派出我們的自動化瑞士刀——n8n,來擔任 WordPress (WooCommerce) 與 Google Sheets 之間 24 小時不打烊的傳令兵。這套 n8n 與 Google Sheets 自動化 流程,將徹底解放你和你的團隊,讓改價格這件事,從惡夢變成喝杯咖啡的時間就能完成的愜意任務。
為什麼我們要『多此一舉』,不用外掛就好?
身為一個囉嗦的工程師,我必須先解釋「為什麼」。在我們動手之前,理解背後的「架構思維」至關重要。這不是為了炫技,而是為了打造一個真正可擴展、可維護的系統。
- 協作的便利性: Google Sheets 是地球上可能最多人會用的協作工具。行銷、營運團隊不需要學習複雜的 WordPress 後台,只要在熟悉的試算表上填寫 SKU 和新價格,剩下的交給自動化。
- 版本控制與歷史紀錄: 誰、在什麼時候、改了什麼價格,Google Sheets 的修訂歷史一目了然。這在追蹤問題或進行復盤時,是無價之寶。多數外掛可沒這麼貼心。
- 權限分離與安全性: 你只需要開放一個 Google Sheet 的編輯權限,而不用給予任何人高風險的 WordPress 後台「編輯商品」權限。這大大降低了人為失誤的風險。
- 極致的彈性: 今天你只想改價格,明天可能想同步更新庫存,後天想加上商品標籤。這套架構可以輕易擴充,只要在 n8n 工作流中加上幾個節點就好。你的需求,你做主,而不是被外掛的功能列表限制住。
簡單來說,我們正在做的,是將「資料層」(價格數據)與「應用層」(WooCommerce 網站)解耦,並透過 n8n 這個中介層來溝通。這是一種輕量級的 Headless (無頭) 管理概念,也是現代化系統架構的核心精神。
自動化藍圖:從 Google Sheets 到 WooCommerce 的旅程
在我們一頭栽進 n8n 的節點世界前,先來看看我們的作戰地圖。整個流程非常清晰:
- 準備彈藥庫 (Google Sheet): 建立一個包含商品 SKU、新價格、以及狀態回寫欄位的試算表。
- 設定觸發器 (n8n Trigger): 設定一個排程,讓 n8n 定期(例如每小時)去檢查試算表。
- 讀取指令 (n8n Read Sheet): n8n 讀取 Google Sheet 上的所有商品資料。
- 逐一處理 (n8n Loop): n8n 將逐行讀取資料,針對每一個商品進行操作。
- 精準定位 (n8n Find Product): 根據每一行的 SKU,透過 WooCommerce API 找到對應的商品 ID。
- 執行更新 (n8n Update Product): 找到商品後,n8n 發送指令更新價格。
- 回報戰果 (n8n Write Status): 更新成功或失敗後,n8n 將結果寫回 Google Sheet 的狀態欄,讓我們一目了然。
看起來很酷對吧?別急,我們一步一步來實現它。
實戰教學:手把手打造你的價格自動化引擎
第一步:前置作業與環境準備
在開始之前,請確保你手邊有這幾樣東西:
- 一個 n8n 執行個體: 無論是 n8n Cloud 或是你自己架設的版本都可以。
- 一個 WordPress 網站 (已安裝 WooCommerce): 這是我們的目標戰場。
- WooCommerce REST API 金鑰: 這是 n8n 進入你網站後台的「通行證」。
- 前往 WordPress 後台 > WooCommerce > 設定 > 進階 > REST API。
- 點擊「新增金鑰」,描述填寫「n8n Price Sync」,權限選擇「讀取/寫入」。
- 產生金鑰後,立刻將「Consumer Key」和「Consumer Secret」複製下來,因為頁面關閉後就看不到了!
- Google API 憑證: 讓 n8n 可以讀寫你的 Google Sheets。你需要在 n8n 的 Credentials 中,新增一個 Google (OAuth2) 憑證。這個過程有點繁瑣,需要進到 Google Cloud Console,但跟著 n8n 的官方文件走一次就能搞定。這也是工程師的日常,為了安全,多幾步是值得的。
第二步:準備你的 Google Sheets 價格儀表板
建立一個新的 Google Sheet,並設定好欄位。結構越簡單越好,關鍵是必須有一個獨一無二的識別碼,這裡我們用 `SKU` 是最理想的選擇。千萬別用商品名稱,那玩意兒太容易變了。
你的試算表應該長得像這樣:
| SKU | Product Name (for reference) | New Price | Status | Last Updated |
|---|---|---|---|---|
| TSHIRT-RED-L | 紅色 T-Shirt (L) | 599 | ||
| MUG-LOGO-01 | 浪科技 Logo 馬克杯 | 350 |
`Status` 和 `Last Updated` 欄位是留給 n8n 回寫資訊用的,這樣我們才能追蹤自動化的執行狀況。
第三步:建構 n8n 工作流 (Workflow)
現在,進入 n8n 的畫布,讓我們把節點一個個串起來!
節點 1:Schedule Trigger (排程觸發)
這是工作流的起點。新增一個 `Schedule` 節點,你可以設定每小時、每天,或任何你需要的頻率來執行這個同步任務。
節點 2:Google Sheets (讀取資料)
新增 `Google Sheets` 節點。設定如下:
- Authentication: 選擇你剛才設定好的 Google OAuth2 憑證。
- Resource: Sheet
- Operation: Read
- Sheet ID: 貼上你的 Google Sheet 網址中的那串亂碼 ID。
- Range: `A:E` (或是你實際有資料的欄位範圍),記得勾選 `Read Headers`。
執行測試後,你應該能看到 n8n 成功抓取到試算表中的所有資料列。
節點 3:Item Lists (迴圈處理)
接下來是關鍵。我們不能一次把所有資料丟給 WooCommerce,而是要一筆一筆處理。新增 `Item Lists` 節點。
- Operation: `Split Out Items` (或類似的選項,依 n8n 版本可能名稱不同)。這個節點會將上一步傳來的一整個資料陣列,拆成一個個獨立的項目 (item),讓後續的節點可以逐一處理。
節點 4:WooCommerce (用 SKU 尋找商品)
現在,我們要用 SKU 來找出商品。新增 `WooCommerce` 節點。
- Authentication: 新增一個 WooCommerce API 憑證,貼上你的 Consumer Key & Secret。
- Resource: Product
- Operation: Get All
- Options > Add Field > SKU: 在這裡,我們要用 n8n 的表達式 (Expression) 來動態填入來自 Google Sheet 的 SKU。點擊旁邊的齒輪圖示,拖曳 `Nodes > Item Lists > Output Data > JSON > SKU` 到欄位中。完整的表達式會像這樣:
{{ $('Item Lists').item.json.SKU }} - Options > Limit: 記得把 Limit 設為 1,因為一個 SKU 只會對應一個商品。
這一步非常重要,因為 WooCommerce 的「更新商品」API 需要的是 `商品 ID`,而不是 SKU。所以我們必須先用 SKU 查到 ID。
節點 5:IF (判斷商品是否存在)
一個穩健的系統必須考慮到例外情況。如果試算表裡的 SKU 在 WooCommerce 找不到怎麼辦?新增 `IF` 節點來處理。
- Value 1: 使用表達式,抓取上一步 WooCommerce 節點回傳的資料。我們要檢查回傳的 `ID` 是否存在。表達式:
{{ $('WooCommerce').item.json.id }} - Operation: `Is Not Empty`
這個節點會有兩個輸出:`true` (找到了商品) 和 `false` (沒找到商品)。
節點 6:WooCommerce (更新商品價格)
將 `IF` 節點的 `true` 輸出連接到這個新的 `WooCommerce` 節點。
- Authentication: 選擇剛才建立的憑證。
- Resource: Product
- Operation: Update
- Product ID: 這裡填入上一個 WooCommerce 節點(尋找商品那一步)回傳的 `ID`。表達式:
{{ $('WooCommerce').item.json.id }} - Update Fields > Add Field > Regular Price: 填入我們在 Google Sheet 上設定的新價格。表達式:
{{ $('Item Lists').item.json['New Price'] }}
太棒了!核心的更新邏輯已經完成。
節點 7:Merge & Google Sheets (回寫狀態)
最後一步,也是讓整個流程完美的收尾:回報結果。不論更新成功或失敗,我們都應該在 Google Sheet 上留下紀錄。
- 新增一個 `Merge` 節點。將「更新商品」節點的輸出和 `IF` 節點的 `false` 輸出都連到這個 `Merge` 節點。這樣無論成功或失敗,流程都會走到這裡。
- 在 `Merge` 節點後,再新增一個 `Google Sheets` 節點。
- Operation: Update
- Sheet ID: 填入你的 Sheet ID。
- Key Column: `SKU`。我們用 SKU 來定位要更新哪一列。
- Key Value:
{{ $('Item Lists').item.json.SKU }} - Columns to Update > Add Column to Update:
- `Status`: 這裡我們可以用一個三元運算子的表達式來判斷狀態:
{{ $('WooCommerce').item.json.id ? 'Success' : 'SKU Not Found' }}。意思是如果 `id` 存在,就寫入 `Success`,否則寫入 `SKU Not Found`。 - `Last Updated`: 使用表達式來填入當前時間:
{{ new Date().toISOString() }}
- `Status`: 這裡我們可以用一個三元運算子的表達式來判斷狀態:
儲存並啟用你的工作流。現在,只要你在 Google Sheets 上修改 `New Price` 欄位,等到下一次排程觸發時,n8n 就會自動幫你同步到 WooCommerce 網站上,並回報執行狀態。恭喜你,你已經打造了一個屬於自己的、強大的自動化價格管理系統!
工程師的囉嗦時間:進階考量與最佳實踐
做到這裡,功能已經完成了。但一個追求卓越的工程師,想的永遠更多。
- API Rate Limiting: 如果你有幾千個商品要一次更新,短時間內大量的 API 請求可能會觸發主機的速率限制。這時就需要引入更複雜的機制,例如在迴圈中加入等待節點,或是採用「指數退讓」策略來優雅地重試。
- 更細緻的錯誤處理: 除了「SKU Not Found」,API 更新也可能因為網路問題、資料庫鎖定等原因失敗。你可以將失敗的項目記錄到另一個 Sheet,或透過 LINE/Slack 發送通知,讓你能即時處理。
- 資料驗證: 如果有人在價格欄填寫了文字或負數怎麼辦?你可以在更新 WooCommerce 之前,加入一個 `IF` 節點或 `Function` 節點,檢查價格是否為有效的數字,從源頭杜絕髒數據。
結論:自動化不是工具,而是一種思維
今天我們透過 n8n 與 Google Sheets 自動化,解決了 WooCommerce 大量更新價格的痛點。但更重要的是,你學到了一種解決問題的「模式」。這個「試算表作為儀表板 -> n8n 作為中介 -> WordPress 作為執行端」的模式,可以應用在無數個場景:
- 用 Google Sheets 管理文章的 SEO 標題和描述,並自動同步。
- 用 Google Sheets 管理會員的自訂欄位資料。
- 用 Google Sheets 快速上下架商品或調整庫存。
自動化的真正威力,不在於你學會了多少工具,而在於你是否能將重複、繁瑣的工作流程,拆解成一個個可以被機器執行的步驟。當你開始用這種思維看待你的日常工作時,你會發現,處處都是可以優化的機會。
希望這篇文章能為你打開一扇新的大門。如果你在實作中遇到任何問題,或是想探討更複雜、更客製化的企業級自動化流程,浪花科技的團隊隨時準備好為你提供專業的諮詢與協助。
推薦閱讀
- WooCommerce 訂單同步不是接上就好!資深工程師教你用 n8n 打造『零錯誤、高智能』的自動化工作流
- 內容工廠再進化!n8n x WordPress 打造『智慧內容管道』:從 Google Sheets 到自動發布 (含 ACF + 精選圖片)
- 你的 n8n 自動化是『玻璃大砲』嗎?資深工程師的『容錯』與『重試』設計聖經,打造企業級強韌工作流
對打造更強大的企業自動化流程感興趣嗎?
別讓重複的工作流程拖垮你的團隊效率。立即聯繫浪花科技,讓我們協助你導入 n8n 與 WordPress 的深度整合,打造專屬於你的、穩固可靠的自動化商業引擎!
常見問題 (FAQ)
Q1: 為什麼要用 n8n,而不是更知名的 Zapier 或 Make?
A: 這是個好問題!對於工程師或重視數據隱私的企業來說,n8n 有幾個關鍵優勢:1. 可自行架設 (Self-hosted): 你的所有資料和流程都在自己的伺服器上運行,完全掌控數據隱私。2. 成本效益: 對於高執行量的任務,自架 n8n 的成本遠低於 Zapier 或 Make 的高階方案。3. 開發者友善: n8n 的節點和表達式提供了更高的自由度和複雜邏輯的處理能力,更適合處理客製化需求。
Q2: 這個工作流可以處理「可變商品」(Variable Products) 的不同價格嗎?
A: 絕對可以,但流程會更複雜一些。你需要調整 Google Sheet,增加一個 `Variation SKU` 欄位。在 n8n 中,你不能只用「更新商品」節點,而是需要先用 SKU 找到主商品 ID,然後再用「商品變化 (Product Variation)」相關的 API 端點,根據變化商品的 ID 或 SKU 去更新對應的價格。這篇文章為了教學清晰,專注在簡單商品,但這個架構完全有能力擴展到可變商品。
Q3: 如果我在 n8n 工作流執行期間,又去修改 Google Sheet 會發生什麼事?
A: 你的工作流只會處理它「開始執行那一刻」讀取到的資料版本。例如,如果你的排程是 10:00 啟動,n8n 在 10:00:01 讀取了整個試算表,那它就會根據這個版本的資料跑到結束。你在 10:00:05 做的任何修改,都要等到下一個排程週期(例如 11:00)才會被讀取。對於非常頻繁的手動更新,這可能會產生一些時間差,但對於大多數批量更新場景來說,這個機制是穩定可靠的。
Q4: 給 n8n 我 WooCommerce 網站的讀寫權限,這樣安全嗎?
A: 安全性的關鍵在於兩點:1. 保護你的 n8n 執行個體: 確保你的 n8n 服務本身是安全的,有強密碼保護,並且最好不要直接暴露在公網上(例如使用 VPN 或 IP 白名單)。2. 最小權限原則: 在 WooCommerce 產生 API 金鑰時,只給予必要的權限。像這個案例,只需要「讀取/寫入」商品即可,絕對不要使用管理員帳號的權限或給予所有權限。這樣就算金鑰不幸外洩,對方能造成的損害也是有限的。






