Go-Live:Google Sheet ➔ Jira 工單自動化管線
在醫療系統上線的高壓環境中,將零散表單回報自動收斂為標準化 Jira 工單,並同步完成雙向狀態回寫與 Teams 即時派工廣播。
上線現場痛點
系統上線初期問題量暴增,維運人員手動將 Google Sheet 回報逐筆複製至 Jira,平均每張耗時 3~5 分鐘。格式紊亂與優先級不明確導致 RD 需反覆向現場確認,造成重大溝通延遲。
自動化解法
以 n8n 設計排程工作流,定時篩選待處理列,經由 Code Node 自動解析嚴重度並轉換為 Jira Wiki Markup。建立工單後立即回寫 Key 與連結,並以 Teams Adaptive Card 廣播新工單。
五階段自動化管線架構
工作流每 15 分鐘自動執行一次,具備防重複開票過濾條件、雙向狀態回寫與獨立 Telegram 錯誤通知分支:
專案背景:上線期的維運混亂
系統上線 (Go-Live) 初期,是資訊團隊壓力最大的時刻。問題回報會從四面八方湧入:電話、LINE 群組、急診與門診現場口頭攔截。為了即時記錄,現場人員習慣先將問題登記在共用的 Google Sheet,再由工程師手動建單。
純人工處理在面對大量回報時暴露了嚴重瓶頸:
- 重複搬運工時: 開單需複製貼上 8~10 個欄位並對應優先級,單張耗時 3~5 分鐘,單日累計耗費數小時行政工時。
- 工單品質參差不齊: 不同回報者描述方式不一,常遺漏診間編號或病歷號等核心上下文,RD 需反覆來回溝通才能重現問題。
- 資訊同步延遲: 手動建單後未能即時回寫狀態,導致現場人員不知道問題是否已被受理,甚至重複回報同一問題。
為了徹底解決維運斷層,我以 n8n 設計了這套自動化處理管線,並與先前的 LineBot 回報系統串接,形成從現場手機回報、Sheet 集中匯整到 Jira 自動開單的完整傳輸鏈。
核心架構:防重複開票與雙向同步機制
工作流依照「監控、過濾、映射、開票、回寫、廣播」六個明確步驟執行:
- 定時觸發 (Schedule Trigger): 工作流每 15 分鐘自動啟動一次,輪詢 Google Sheet 是否有新增回報。
- 防重開票條件鎖 (Google Sheets Node): 僅抓取
Jira Link 為空且可Jira='Y'的資料列。未經現場幹部確認或已完成開票的資料列不會被重複處理。 - 格式化與優先級映射 (Code Node): 讀取原始欄位並組裝為帶有彩色 Panel 區塊的 Jira Wiki Markup 描述,同時將「嚴重度等級」映射為 Jira Priority ID(P1 ➔ 1、P2 ➔ 2、P3 ➔ 3、P4 ➔ 4)。
- 自動建立工單 (Jira Node): 調用 Jira REST API 建立標準 Bug Ticket,帶入 Assignee、Reporter、Component 與 Labels 標籤。
- 雙向狀態回寫 (Writeback Node): 工單建立成功後,將 Jira Key 連結回寫至 Sheet 的
Jira Link欄位,並將可Jira更新為 "Done",消除資訊孤島。 - Teams Adaptive Card 廣播 (Power Automate Webhook): 將工單編號、嚴重度與摘要組裝成 Adaptive Card,即時推送到團隊 Teams 頻道。
- 獨立異常告警 (Telegram Node): 關鍵節點配置
Continue (using error output),當 API 逾時或認證失效時,立即發送 Telegram 警報通知維運人員。
實體介面與成果展示
點擊下方標籤檢視工作流實體節點與各階段產出:
n8n 工作流實體畫布
包含定時觸發、Google Sheets 篩選、Code Node 格式化、Jira 建立、狀態回寫與雙重推播分支。
輸入端:Google Sheet 集中表單
維運團隊確認問題後,於「可Jira」欄位填上 "Y",腳本自動處理並回寫產出的 Jira Link 與 Done 狀態。
產出端:標準化 Jira Wiki Markup 工單
確保每張 Ticket 具備彩色資訊 Panel、嚴重度映射、病歷號與診間標註,省去 RD 反覆向第一線確認的溝通成本。
推播端:Microsoft Teams Adaptive Card
工單建立完成後即刻將關鍵資訊推播至團隊頻道,確保所有工程師即時掌握新問題。
實作步驟與節點配置細節
以下說明關鍵節點之配置條件與核心 JavaScript 格式化邏輯:
將 Trigger Interval 設定為每 15 分鐘 (Minutes) 觸發一次,避免頻繁輪詢造成 API 速率限制,同時確保緊急問題在 15 分鐘內進入 Jira 追蹤。
在 Filters 區塊設定三道防禦條件:
- Filter 1:
Jira Link| Condition: Is Empty(尚未建立工單) - Filter 2:
可Jira| Condition: Equals 'Y'(現場幹部已核准) - Filter 3:
問題描述| Condition: Not Empty(排除空行)
節點 On Error 設為 "Continue (using error output)",連接 Telegram 錯誤通知分支。
核心 JavaScript 代碼負責組裝帶有彩色 Panel 的 Jira 描述,並將「嚴重度等級」映射為數值 Priority ID:
const itemJson = $input.item.json;
// 優先級映射表 (Severity -> Jira Priority ID)
const priorityMap = {
'P1': '1', // Highest
'P2': '2', // High
'P3': '3', // Medium
'P4': '4', // Low
'_': '3' // Default: Medium
};
function createListItem(emoji, label, value, defaultValue = 'N/A') {
let displayValue = value;
if (typeof value === 'boolean') displayValue = value ? '是' : '否';
return `* ${emoji} *${label}:* ${displayValue || defaultValue}`;
}
// Panel 1: 問題回報資訊 (藍色面板)
const reportInfoPanel = [
'{panel:title=問題回報資訊|bgColor=#DEEBFF|borderColor=#B3D4FF}',
createListItem('💻', '系統別/地點', itemJson['系統別/地點']),
createListItem('📝', '問題簡述', itemJson['問題簡述']),
createListItem('👤', '回報者姓名', itemJson['提出者']),
createListItem('🚨', '緊急', itemJson['緊急']),
createListItem('👨⚕️', '職務', itemJson['職務']),
createListItem('📞', '聯絡方式', itemJson['聯絡方式']),
createListItem('🗂️', '病歷號/住院號', itemJson['病歷號/住院號']),
createListItem('📍', '診間或病房編號', itemJson['診間或病房編號']),
'{panel}'
].join('\n');
// Panel 2: 內部處理狀態 (黃色面板)
const internalStatusPanel = [
'{panel:title=內部處理狀態|bgColor=#FEF0B5|borderColor=#FFC400}',
createListItem('🚦', '嚴重度等級', itemJson['嚴重度等級'], '未分類'),
createListItem('🧑💻', 'Owner', itemJson['Owner(RD)'], '未指派'),
createListItem('⏳', '處理狀態', itemJson['處理狀態'], '待處理'),
createListItem('🛠️', '處理方式', itemJson['處理方式'], '分析中'),
'{panel}'
].join('\n');
itemJson.jiraDescriptionString = `${reportInfoPanel}\n\n${internalStatusPanel}`;
itemJson.priorityId = priorityMap[itemJson['嚴重度等級']] || priorityMap['_'];
return itemJson;
Jira 工單建立成功後,依據 row_number 主鍵將 https://YOUR_DOMAIN/browse/{{ key }} 回寫至 Sheet,並將狀態標記為 Done。最後透過 Power Automate Webhook 發送 Teams Adaptive Card,完成整條自動化路徑。
實質成效與工程收益
-
消除重複人工作業 單張工單處理時間從 3~5 分鐘降至 0 秒,單日節省數小時複製貼上時間。
-
統一工單格式標準 結構化 Wiki Markup 消除資訊缺漏,RD 無需反覆向第一線確認上下文。
-
主動式即時廣播 Teams Adaptive Card 即時推播,緊急問題能在 15 分鐘內傳達至相關責任工程師。