n8n 做個計數器,保存變數到下一次執行

n8n 可能有人會好奇,怎麼做計數器,例如一天只能使用 200次。
但是 Node 裡,似乎沒看到這功能。
但其實這功能就藏在 Code 裡
獲取靜態資料
其實這功能就藏在 $getWorkflowStaticData
使用這個函數,拿到的物件,其實是能持久化的,即使 n8n 關掉再開,資料也還在。

整個 n8n 共用這變數
使用 $getWorkflowStaticData
('global')
這邊可以看到,這個 count 已經被使用 9 次了,並且在其他 Code 也可以獲得這個 count


單一 Node 使用,不能跨 Node 使用
使用 $getWorkflowStaticData
('node')
這邊可以看到,這個 count 已經被使用 9 次了,但其他 Code 無法用這方式獲得這個 count


立刻來實作一天只限呼叫 200 次的 workflow 吧
這邊只需要在 Code 使用後 加一個 IF 就好了。
IF 可以用 is less than or equal
(<= 的意思) 就能做到一天最多只有200次的執行。


最後注意事項
如果你在測試你會發現,你怎麼做都好像沒有寫入。
這功能其實有限定,官網說只能是 Webhook 或 觸發器才能讀寫。不能透過 Test Workflow 來讀寫。
最後分享這個 global 的 Code
// Get the global workflow static data
var today = new Date().toLocaleDateString()
const workflowStaticData = $getWorkflowStaticData('global');
if (workflowStaticData.today == undefined || workflowStaticData.today != today){
workflowStaticData.count=1
workflowStaticData.today=today
}else{
workflowStaticData.count++
}
return {
count: workflowStaticData.count,
today: workflowStaticData.today
}