iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
AI & Data

30天之後,你就是你團隊內最會n8n的人系列 第 14

[Day 15] 打造團隊的中央神經系統:跨平台狀態自動同步

  • 分享至 

  • xImage
  •  

過去幾天,我們學會了收集、分析和查詢資料。

我們打造的系統,已經能大幅提升團隊的資訊透明度。但它還缺少一個重要的特性:自我修正。

今天,我們要打通不同工具之間的壁壘,讓我們的 n8n 系統從一個「被動的資料庫」,進化成一個能夠響應外部變化、主動維持資料一致性的「中央神經系統」。

【今天的煩惱】
團隊使用專案管理平台 Notion 或 Jira 來管理專案卡片,同時使用我們建立的 Google Sheets 作為任務總表。

問題來了:當 PM 在平台上把一張卡片從「進行中」拖到「已完成」列表時,Google Sheets 總表裡的狀態還是「進行中」。有人用 Slack 機器人一查,就會查到過時的資訊。這種「狀態不一致」,是團隊協作混亂與誤解的根源。

【今天的解法】
我們要打造一個「狀態同步更新器」。我們將讓專案管理工具 (以 Trello 為例) 成為「單一指令來源 (Single Source of Truth)」。只要 Trello 上的卡片狀態一變動,n8n 就會自動在幾秒鐘內,找到 Google Sheets 中的對應任務,並將其狀態欄位更新 (Update) 成最新的狀態。


第一步:設定指令來源 (Jira Trigger)
我們要讓 n8n 的耳朵,專心聆聽來自 Jira 的一舉一動。

💡 專家知識:準備 Jira API Token
Jira 的安全機制非常嚴謹。它不允許你使用帳號密碼直接登入,而是需要產生一組專用的「API Token」。

  1. 前往 id.atlassian.com/manage-profile/security/api-tokens

  2. 點擊 Create API token,為你的 Token 取一個好記的名字(例如 n8n-workflow)。

  3. 立刻複製這串長長的 Token,因為關掉視窗後就再也看不到了。

設定 n8n 的 Jira Trigger

  1. 建立一個新的工作流,觸發器選擇 Jira Trigger。

    • Credential: 點擊 Create New。你需要填寫三項資訊:

    • Email: 你的 Atlassian 帳號 Email。

    • Host: 你的 Jira 網域名稱,例如 your-company.atlassian.net。

    • API Token: 貼上你剛剛複製的那串 API Token。

    • Events: 選擇 Issue Updated (任務被更新)。

    • Project Key: 選擇你要監控的專案。

第二步:過濾出「完成」事件 (IF 節點)
Jira 的 Issue Updated 觸發器非常靈敏,任何風吹草動(例如有人加了個留言、改了個描述)都會觸發它。但我們只關心一件事:狀態被更新為「完成」。所以,我們需要一個 IF 節點來做精準過濾。

在 Jira Trigger 後面,加上一個 IF 節點。

Value 1 (Expression):

JavaScript

{{ $trigger.body.changelog.items.some(item => item.field === 'status' && item.toString === 'Done') }}
Operation: Boolean -> Is True。

第三步:在資料庫中定位目標 (Google Sheets - Search)
n8n 確認了這是一個「完成」事件後,它就要去我們的 Google Sheets 總表中,找到對應的那一列。

從 IF 節點的 true 出口,連接一個 Google Sheets 節點。

  • Operation: Search for Rows (Lookup)。

  • Document / Sheet Name: 指向我們的「團隊任務總表」。

  • Key: 選擇用來匹配的欄位。最穩固的作法,是在你的總表中有一個 Jira Key 的欄位,用來存放 PROJ-123 這樣的任務編號。

  • Value: 填入從 Jira 傳來的任務編號。使用運算式:{{ $trigger.body.issue.key }}。

這一步完成後,n8n 就會得到要更新的那一列的 rowIndex (列編號)。

第四步:執行更新指令 (Google Sheets - Update)
定位到目標後,就可以下達更新指令了。

在 Search for Rows 節點後,再加一個 Google Sheets 節點。

  • Operation: Update a Row。

  • Row Number: 填入運算式:{{ $json.rowIndex }}。

  • Columns: 點擊 Add Column。

  • Column: 選擇 狀態 欄位。

  • Value: 填入 已完成。

第五步 (強烈建議):廣播同步結果
在 Update a Row 節點後,加上一個 Slack 節點,在 Text 欄位寫:
✅ 狀態同步成功:Jira 任務 [{{ $trigger.body.issue.key }}] {{ $trigger.body.issue.fields.summary }} 已被更新為【已完成】。


今天,我們打通了團隊核心工具之間的「任督二脈」。你的 n8n 系統,不再只是一個被動的資料庫,它成了一個能主動響應、自我修正的「中央神經系統」。

「辦公室超人工具組」篇章總結
回顧這一週,我們從收集資料 (Google Forms),到加工 (Set)、廣播 (Slack)、查詢 (@mention Bot),再到今天的同步 (Jira),你已經掌握了一套完整的、能解決無數辦公室煩惱的高價值技能。

我們已經將最常見的辦公室場景自動化了。

從明天開始,我們要掀開 n8n 的引擎蓋,學習更底層、更強大的「火力升級」技巧,例如直接與任何網站的 API 對話的 HTTP Request 節點。


上一篇
[Day 13] 打造 Slack 查詢機器人:讓任何人都能隨時掌握進度
系列文
30天之後,你就是你團隊內最會n8n的人14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言