n8n+Telegram真的是個很好用的工具,一起來看看怎麼用n8n+Telegram,用自動回覆機器人的方式來處理任務管理系統吧!
任務管理系統的思考脈絡
任務管理系統的成分
管理注意力或管理時間,無論最後歷程為何,最後落地大概就是兩個成分:
- 待辦事項清單
- 時間行事曆
其中,時間行事曆在David Allen在Getting Things Done中,建議只寫這些東西:
- 具體時間的行動事項(Time-Specific Action,例如1/1 19:00跟朋友吃飯)
- 具體日期的行動事項(Day-Specific Action,例如1/2報名考試)
- 該日的資訊類型(Day-Specific Information,例如12/25聖誕節會放假,雖然理由不是聖誕節)
他高度建議,不要把「每天要做什麼」的待辦事項寫在行事曆上!
由於長時間以來行事曆都是紙本,老派的心靈還沒有轉換上Google Calendar,這個把待辦事項清單寫上行事曆,是真的維持很久的壞習慣,趁著這一次全部分開來。
To-Do List 待辦事項清單的功能:解放記憶,不要用大腦記得瑣碎的事情
因為不能寫在記事本上了,在電子化之前,待辦事項清單是一個高度不被重視的方式:
在「各個工作地方」隨意「拿著一張A4紙的背面空白處」在寫清單
優點:
- 隨時想到什麼寫什麼
這個缺點也很明顯:
- 要做的事情散落在各處
- 有一些事情是沒有規劃時間,但是要記得做的那些事情,最後因為這些紙越累積越多,然後散落,最後就有一些事情沒有繼續追蹤下去
事情越忙越瑣碎,記不得這麼多事情的壓力就會越來越大,也會讓心思有很多額外的負擔。
因此,這種電子化後的任務管理系統,要有幾個基礎:
- 當我想起來要做什麼的時候,立刻可以把它丟進去待辦清單之中之後再處理
- 要隨時可以取得,無論是寫入或是取得訊息

任務日誌的時間區塊:立即、當天、明天、(跟那些完全不需要做的事情)
在《重要事明日做》一書中,作者有一個很重要的分類:
就時間管理的目的而言,我將緊急程度分為三個等級:立即、當天、明天。
立即:立刻放下手邊所有事情、集中注意力的事項,才叫立即。通常是緊急應變。
當天:當天需要完成的事情,但預先規劃這天時,無法把這件事情放進來。這是我們最討厭的狀況。
明天:絕大多數的狀況,都是明天。這些才是可以事先規劃的事項。是預設反應。
因此,在工作流中,我們最喜歡的狀況是:
- 遇到事情,把事情增加入工作清單,今天不做
- 今天臨時增加上去的事情越少越好
- 規劃明天工作的行程時,把它從工作清單移入明天工作清單,然後下面畫停止線
- 隔天,讓明天的工作清單變成今天,再一個一個把它全部做完
任務日誌的「今日」-只做終止線上的事情
《重要事明日做》有重要的概念:終止線。
因為一天能夠做的事情有限,當你在清單中劃下終止線後,增加的事情都是明日的事情。因此,今天會做的事情,只有:
- 之前就排定要在今天處理的工作
- 前一天收集的工作
- 因為有需要「當天」完成的急迫性,而在今天的終止線下方加上新的事項
在系統中,把開放事件拉到今日,並且在今天的工作流程中把「今日」的項目消光,就是我們系統的期待。

重要的事「明日做」-有限的完成進度
在每一天結束之前,都需要檢視一下仍保持OPEN及今天新增的項目,並且將明天要做的事情,移動到明天的工作清單裡面。這樣,我們又可以畫出一條線出來。
整體來說,這種作法有很多的優點:
- 封閉式清單
- 系統化的方式處理新的工作事項
- 減少干擾
- 輕易規劃一天的工作
我們要在n8n上去實現這個架構。
功能
由使用者促發的功能
- 增加任務:打一串字(如:安排訪談),即表示增加任務
- 完成任務:打該任務的編號(如:134),即表示任務已完成
- 查詢任務:打/all,即表示列入所有在待辦清單上的任務
- 查詢今日已完成任務:打/D,即顯示本日已完成之任務
- 指定今日任務:打D+數字(如:D134),即表示將任務增加進今日的任務
- 指定明日任務:打T+數字(如:T134),即表示將任務增加進明日的任務
由系統自動促發的功能
- 半夜00:05或任何一指定時間:將當日未完成任務放回待辦事項,將已指定之明日任務變成今日任務
為什麼是Telegram?
因為Telegram傳送訊息不需要額外費用,LINE需要。
另外,Telegram在電腦、手機等媒介上都能使用,跨平台操作十分友善,對常常在不同介面工作的人而言十分方便。
資料庫結構
資料表建在Google Sheet上,一共有三張表:Open、Close和IDGet。
Open表

就是所有還沒完成的事項,To-Do List的最原本形式。
只是他多了一個Status的欄位,有Open就是沒列時間的、Today是今天要做的、Tomorrow是明天要做的。
Close表

所有被完成的項目,都會被搬到這張表來。
裡面有一個欄位會用到,是完成時間。當要查詢今天完成哪些事情的時候, 會查這個欄位。
IDGet表

只是方便系統去取一個唯一的事件號碼,如果可以操作n8n的變數內容,就不一定要這張表。
怎麼樣可以讓你最快獲得這個東西呢?
- 請AI工具(如ChatGPT)讀取這個網頁
- 請AI工具根據網頁的說明,設計n8n的運作邏輯,然後輸出JSON檔案
- 把輸出後的JSON檔案匯入n8n,一些加密驗證連線的方式再調整,就是最快的方式啦~千萬不要自己做!
n8n架構
這個基本的架構是:
使用者打字 —> n8n 解析指令 —> 判斷任務操作類型 —> 更新 Google Sheets —>回 Telegram 確認
增加任務
使用者打字
→ Telegram 輸入:安排訪談
n8n 解析指令
→ Telegram Trigger 收到訊息文字($json.message.text)
→ 進到 Command Switch(判斷文字型態)
判斷任務操作類型
→ Command Switch 規則:
- 不是 /… 開頭
- 不是純數字
- 不是 D\d+ 或 T\d+→ 走 fallback(也就是「新增任務」流程)
更新 Google Sheets
→ Get Last ID:去 IDGet 表抓目前最後一個全域 ID
→ Get Existing Open Tasks:去 Open 表抓既有任務(用來算下一個 IdentID)
→ Calculate New IDs:計算 nextId 與 nextIdentId
→ Create New Task Data:把任務內容+新 ID 組成一筆資料(含台北時區時間戳)
→ Append New Task:把新任務 append 到 Open 表
→ Update IDGet:把最新 nextId 回寫到 IDGet 表
回 Telegram 確認
→ Send Add Acknowledgement:回覆「已加入代辦事項:xxx (ID: #IdentID)」
完成任務
使用者打字
→ Telegram 輸入:134
n8n 解析指令
→ Telegram Trigger 收到文字
→ Command Switch 判斷是「純數字」
判斷任務操作類型
→ Command Switch 命中規則:^[0-9]+$
→ 走「完成任務」分支
更新 Google Sheets
→ Get Open Tasks For Completion:先把 Open 表全部讀出來
→ Prepare Completion Data:在程式節點中
- 找到 IdentID = 134 的那一列
- 產生一筆要寫入 Close 表的資料(Status=Close、ClosedAt/UpdatedAt=台北時區)→ Append to Close Sheet:把完成資料 append 到 Close 表→ confirmRow:回 Open 表用 ID 查這筆(用來拿 Task 名稱做回覆)→ Update Open Row:把 Open 表該列刪掉(operation=delete,使用 row_number)
回 Telegram 確認
→ Send Completion Acknowledgement:回覆「已完成:Task (ID: IdentID)」
查詢任務(全部/all,今日/D)
使用者打字
→ Telegram 輸入:/all
n8n 解析指令
→ Telegram Trigger 收到文字
→ Command Switch 判斷「以 / 開頭」
→ 進到 Switch(專門判斷 /all 或 /D)
判斷任務操作類型
→ Switch 命中條件:/all
→ 走「列出任務清單」分支
更新 Google Sheets
→ Get Open Tasks List:從 Open 表讀出所有列(包含 Open/Today/Tomorrow 狀態)
回 Telegram 確認
→ Format Task List:把三種狀態分組+排序+組成文字
→ Send Task List:把整理好的清單回 Telegram
指定任務(今日D+數字,明日T+數字)
使用者打字
→ Telegram 輸入:D134
n8n 解析指令
→ Telegram Trigger 收到文字
→ Command Switch 命中規則:^D\d+$(走到「D/T 指派」那條支線)
→ 進到 Command Switch1(再判斷是 D 還是 T)
判斷任務操作類型
→ Command Switch1 命中:^D\d+$
→ Edit Fields:把 D134 拆成 targetIdentId=134
更新 Google Sheets
→ Get Task By IdentID:用 IdentID=134 去 Open 表抓出該任務(主要是拿 Task 名稱)
→ Update Status To Today:對 Open 表做 appendOrUpdate
matchingColumns=IdentID
- 把 Status 更新成 Today
- UpdatedAt 寫入台北時區時間
回 Telegram 確認
→ Send Add Acknowledgement1:回覆「✅ 已加入今日預排:#134 任務文字」
系統自動整理
Today 任務處理流程(未完成任務回到待辦)
→ n8n 啟動排程
→ 篩選 Google Sheets 中 Status = Today 的任務
→ 將這些任務的 Status 更新為 Open
→ UpdatedAt 寫入當下時間
→(可選)納入跨日整理回報清單
Tomorrow 任務處理流程(明日任務轉為今日)
→ n8n 啟動排程
→ 篩選 Google Sheets 中 Status = Tomorrow 的任務
→ 將這些任務的 Status 更新為 Today
→ UpdatedAt 寫入當下時間
→(可選)納入跨日整理回報清單