iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Odoo

站在巨人的肩膀上打造企業智慧助手:Make × AI × Odoo 的實踐之路系列 第 28

🚀 Day 28:Odoo Tag × Google Sheets 自動同步:告別手動調整!

  • 分享至 

  • xImage
  •  

一、前情提要:從 Gmail 分類到資料維護

昨天的 Day27,我們完成了:

✅ 用 AI 整理 Odoo Tag,建立產品規格字典
✅ 收到 Gmail 後,AI 能對照字典自動分類
✅ 產生唯一、精確的規格輸出

延續昨天的分類流程,我也在結尾埋下了一個伏筆:
👉 如果 Odoo 裡的 Tag 有新增或修改,難道還要人工去維護 Google Sheets 嗎?
這樣就違背了我們追求「全自動」的初衷。

所以今天,我要帶大家做的就是:
🎯 讓 Odoo 與 Google Sheets 自動同步,完全免人工維護。


二、使用者情境:當 Odoo Tag 與 Sheets 不一致

假設今天 Odoo 新增了一個 Tag:

  • 用途 – IT用

如果 Google Sheets 還停留在舊資料,那 AI 就會判斷不出來 → 分類錯誤 → 商機帶錯標籤

所以在這裡,我的想法是:
👉 每次有新詢價信件進來時,先檢查 Odoo 與 Sheets 的 Tag 是否同步。
這樣才能確保後續的分類結果是正確的。


三、實際操作流程

既然問題出在「資料不同步」,那解法自然就是讓系統能自動比對。
為了解決這個問題,我的流程是這樣設計的:

1️⃣ 每次 Gmail 收到詢價單時 → 先到 Odoo product.tag 查詢數量。
2️⃣ 再從 Google Sheets 讀取目前的 Tag 數量。
3️⃣ 如果兩邊數量不一致 → 啟動「更新流程」。
4️⃣ 用 AI 幫我比對 哪一筆 Odoo 有、Sheets 沒有
5️⃣ 把缺少的資料補進 Google Sheets。

有了這樣的邏輯,流程不會白白浪費效能,也能確保 分類前一定是最新資料


🔧 步驟 1:讀取 Odoo Tag 數量

首先,我們需要取得 Odoo 中最新的 Tag 資料。
新增一個 Odoo 的 Make an API Call,設定模型為 product.tag,並讀取欄位 name
https://ithelp.ithome.com.tw/upload/images/20250828/20177665XBw3Z6IumP.png


🔧 步驟 2:讀取 Google Sheets Tag 數量

接下來要比對 Google Sheets 與 Odoo 的數量是否相同,所以要讀取 Google Sheets 的行數。
我這邊是先在 Google Sheets 的某一個儲存格設定 =COUNTA() 函數,然後在 Make 直接讀取這個儲存格。
所以新增一個 Google Sheets 的 Get a Cell,然後設定要讀取的儲存格。
https://ithelp.ithome.com.tw/upload/images/20250828/20177665el6LV2jV80.png


🔧 步驟 3:增加 Router

讀取到 Odoo Tag 和 Google Sheets Tag 的數量後,接下來就可以來判斷:

  • 若數量相同,則不需要更新,就可以直接接續 AI 判斷客戶需求產品的 Tag
  • 若數量不相同,則需要更新

https://ithelp.ithome.com.tw/upload/images/20250828/20177665hQTBkc5WmV.png


🔧 步驟 4:AI 判斷

若需要更新的話,我們要先判斷,要更新什麼?
這時候,我們就請出 AI 來幫忙比對差異
https://ithelp.ithome.com.tw/upload/images/20250828/20177665PWbwCMMaLm.png
新增一個 Gemini 模組,並設計 Prompt,讓 AI 回傳缺少的 Tag。
Prompt範例

你會收到兩份資料:
- A:物件陣列,每個物件有 id 與 name
- B:商品標籤清單,每筆有「名稱,分類,分類說明(中文)」三欄

請依下列步驟操作:

1. 找出所有在 A 但沒在 B 的 name。
2. 對於每個缺漏的 name,根據 B 的「分類」欄**自動分類**:
   - 嚴格檢查 B 內是否有可對應的分類(可用前綴、關鍵詞比對)。
   - 如果無法判斷才標示為「其他」。
3. 「分類說明(中文)」欄,若 B 有對應分類就填入,沒有就空白。
4. 每筆回傳一行,格式為:
   `ID,name,分類,分類說明(中文)`
5. 若全部 name 都有出現在 B,請只回傳「全部皆有」。
6. **請勿輸出任何多餘說明、格式標題或換行,只輸出最終比對結果。**

預期回覆格式:
id,商品/產品TAG,分類,分類說明(中文)

A:{{11.body}}
B:{{9.body}}

🔧 步驟 5:Split 小手術

根據我的 Prompt,AI 會回傳一個字串為:

1543,用途 – bibitest,用途,適用材料/用途

所以 AI 回傳的是用逗號分隔的字串,因此我們需要先將它拆解成變數。
在這裡可以使用 Tools 的 Set Variable 模組,搭配 split() 方法處理。
https://ithelp.ithome.com.tw/upload/images/20250828/20177665eM5559pZ5a.png


🔧 步驟 6:更新 Google Sheets

接下來就是更新 Google Sheets,將我們找到的資料更新至 Google Sheets。
所以新增一個 Google Sheets 的 Update a Row,並設定要更新的欄位以及資料。
https://ithelp.ithome.com.tw/upload/images/20250828/20177665yM5RyctRMC.png


這樣其實就完成自動根據 Odoo Tag 更新 Google Sheets 的自動化流程了。


四、測試成果

實測流程 🚀:

1️⃣ 在 Odoo 新增一個 Tag:「用途 – IT用
2️⃣ 系統收到 Gmail 詢價信
3️⃣ 系統比對 Odoo 與 Sheets → 發現缺少一筆
4️⃣ 啟動更新流程 → AI 判斷缺少的 Tag 為 用途 – IT用
5️⃣ 自動新增到 Google Sheets
gif


五、結語:新增有了,那刪除呢?

今天我們完成了:

✅ Gmail → Odoo Tag 數量比對
✅ 缺少資料 → AI 自動找出來
✅ 新增至 Google Sheets → 保持同步

這樣一來,就不用人工去維護 Google Sheets,每一次的 Gmail 分類都能即時對應 Odoo 的最新狀態。


那麼,聰明的你應該已經發現:

「欸?這流程只會新增耶,那如果我在 Odoo 把某個 Tag 刪掉怎麼辦?」 🤔

沒錯,目前的流程只有補缺少的 Tag,不會處理刪除。
所以我把處理刪除的這個流程,留給你當作「回家作業」。

👉 提示:其實做法很簡單,只要把 Odoo 和 Sheets 的差集算出來,然後呼叫 Google Sheets 的刪除 API 就行。
就當作是給你的一點小練習啦 😎。


📌 明天 Day29 預告:

在 Day27,我們已經能讓 AI 幫忙判斷「客戶需求屬於哪些 Tag」。
而在今天,我們解決了 Tag 自動同步 的問題。

接下來,就是要進一步:

👉 如何根據這些 Tag,自動比對 Odoo 裡哪些產品符合條件?

這樣一來,客戶寄一封詢價信,我們就能讓:

AI → Tag → 產品 → 商機 一路自動串起來。

我們明天見 👋


上一篇
🚀 Day 27:AI × Gmail × Odoo 標籤分類:自動解析客戶詢價信
下一篇
🚀 Day 29:AI × Odoo × Tag 自動配對:從需求直達產品
系列文
站在巨人的肩膀上打造企業智慧助手:Make × AI × Odoo 的實踐之路30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言