自动化多级费用审批与报销
高级
这是一个自动化工作流,包含 21 个节点。主要使用 If, Set, Code, Gmail, Slack 等节点。 使用 JotForm、Slack 和 Google Sheets 自动处理多级费用审批与报销
前置要求
- •Google 账号和 Gmail API 凭证
- •Slack Bot Token 或 Webhook URL
- •Google Sheets API 凭证
分类
-
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "277842713620d9f5554de3b1518b865a152c8c4db680008bd8aec536fc18b4a8",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "2eb6d9f2-7f9d-453f-a548-cf2660f7248c",
"name": "JotForm触发器",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-1120,
-16
],
"webhookId": "expense-submission",
"parameters": {
"form": "252860582136459"
},
"credentials": {
"jotFormApi": {
"id": "W7O1b225FpOwkwDT",
"name": "JotForm account-Deepanshi"
}
},
"typeVersion": 1
},
{
"id": "0798c2b1-7ed5-45ce-a26c-2e8f7ada6a43",
"name": "解析表单数据",
"type": "n8n-nodes-base.code",
"position": [
-864,
-16
],
"parameters": {
"jsCode": "// Parse form data and prepare for processing\nconst formData = $input.first().json;\n\nreturn {\n json: {\n submissionId: formData.submissionID || Date.now().toString(),\n employeeName: formData.employeeName || formData.q3_employeeName,\n employeeEmail: formData.employeeEmail || formData.q4_employeeEmail,\n employeeId: formData.employeeId || formData.q5_employeeId,\n amount: parseFloat(formData.amount || formData.q6_amount),\n category: formData.category || formData.q7_category,\n merchant: formData.merchant || formData.q8_merchant,\n date: formData.date || formData.q9_date,\n description: formData.description || formData.q10_description,\n receiptUrl: formData.receiptUrl || formData.q11_receipt,\n submittedAt: new Date().toISOString()\n }\n};"
},
"typeVersion": 2
},
{
"id": "df2085e9-dc08-4f25-a99e-009e2340b47c",
"name": "验证策略",
"type": "n8n-nodes-base.code",
"position": [
-672,
-16
],
"parameters": {
"jsCode": "// Company policy rules and validation\nconst data = $input.first().json;\n\nconst policy = {\n maxAmounts: {\n meals: 75,\n travel: 500,\n office_supplies: 200,\n software: 1000,\n entertainment: 150,\n other: 100\n },\n approvedCategories: ['meals', 'travel', 'office_supplies', 'software', 'entertainment'],\n autoApproveThreshold: 100,\n managerApprovalThreshold: 500\n};\n\nconst amount = data.amount;\nconst category = data.category;\n\nlet policyViolations = [];\nlet requiresApproval = 'auto';\n\nif (!policy.approvedCategories.includes(category)) {\n policyViolations.push('Category not approved');\n}\n\nif (policy.maxAmounts[category] && amount > policy.maxAmounts[category]) {\n policyViolations.push('Amount exceeds category limit');\n}\n\nif (amount < policy.autoApproveThreshold && policyViolations.length === 0) {\n requiresApproval = 'auto';\n} else if (amount >= policy.autoApproveThreshold && amount < policy.managerApprovalThreshold) {\n requiresApproval = 'manager';\n} else if (amount >= policy.managerApprovalThreshold) {\n requiresApproval = 'director';\n}\n\nreturn {\n json: {\n ...data,\n policyViolations: policyViolations,\n isCompliant: policyViolations.length === 0,\n requiresApproval: requiresApproval,\n status: 'pending'\n }\n};"
},
"typeVersion": 2
},
{
"id": "4ac52b34-7a64-49f5-b368-43d8b99bcab3",
"name": "检查违规",
"type": "n8n-nodes-base.if",
"position": [
-464,
-16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.policyViolations.length }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "9d132c2f-7f99-4b36-b543-27131702460c",
"name": "设置拒绝",
"type": "n8n-nodes-base.set",
"position": [
-272,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "status",
"name": "status",
"type": "string",
"value": "rejected"
},
{
"id": "rejectionReason",
"name": "rejectionReason",
"type": "string",
"value": "=Policy violations: {{ $json.policyViolations.join(', ') }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "47566677-5342-4b26-9974-793526a59bd9",
"name": "路由自动审批",
"type": "n8n-nodes-base.if",
"position": [
-272,
-176
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.requiresApproval }}",
"rightValue": "auto"
}
]
}
},
"typeVersion": 2
},
{
"id": "c0b971bc-a5ce-48b6-978c-54ae02112505",
"name": "自动批准",
"type": "n8n-nodes-base.set",
"position": [
-64,
-272
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "status",
"name": "status",
"type": "string",
"value": "approved"
},
{
"id": "approvedBy",
"name": "approvedBy",
"type": "string",
"value": "System (Auto-Approved)"
},
{
"id": "approvedAt",
"name": "approvedAt",
"type": "string",
"value": "={{ new Date().toISOString() }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "eef387ab-bee8-4570-8cca-26ccbd30abeb",
"name": "路由经理",
"type": "n8n-nodes-base.if",
"position": [
-64,
-80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.requiresApproval }}",
"rightValue": "manager"
}
]
}
},
"typeVersion": 2
},
{
"id": "74152681-2cf6-4e76-aabb-87ae00a86048",
"name": "Slack经理",
"type": "n8n-nodes-base.slack",
"position": [
144,
-224
],
"webhookId": "61c90b37-cd59-4332-b0c6-0f8f15004d43",
"parameters": {
"text": "=New Expense Approval Required\nEmployee: {{ $json.employeeName }}\nAmount: ${{ $json.amount }}\nCategory: {{ $json.category }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C01234567"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "piPcLxWbLrndcGhp",
"name": "Slack account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "e05fba8b-60e5-4438-9f7a-cd828bace8b8",
"name": "Slack总监",
"type": "n8n-nodes-base.slack",
"position": [
144,
-16
],
"webhookId": "eba016eb-5ad8-4d29-822e-9038e73a0733",
"parameters": {
"text": "=High-Value Expense - Director Approval\nEmployee: {{ $json.employeeName }}\nAmount: ${{ $json.amount }}\nCategory: {{ $json.category }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C98765432"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "piPcLxWbLrndcGhp",
"name": "Slack account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "b7a58104-fc21-485a-8c93-edb1dc253b2b",
"name": "记录到Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
336,
-64
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"submissionId"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Kz2DdSp11rxqwlFt",
"name": "Google Sheets account - Deepanshi"
}
},
"typeVersion": 4.4
},
{
"id": "1af29bbe-b3ee-42ee-91a9-388b70659c48",
"name": "是否批准",
"type": "n8n-nodes-base.if",
"position": [
544,
-64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "approved"
}
]
}
},
"typeVersion": 2
},
{
"id": "0e8c5d12-fee3-4c7d-bc16-77a79e39befe",
"name": "拒绝邮件",
"type": "n8n-nodes-base.gmail",
"position": [
752,
0
],
"webhookId": "fe2cb3ee-3c0f-4429-ac5c-9482a923f808",
"parameters": {
"sendTo": "={{ $json.employeeEmail }}",
"message": "=Hi, Your expense for {{ $json.amount}} has been rejected as it did not matches with the company's validation policy.",
"options": {},
"subject": "=Expense Rejected - ${{ $json.amount }}"
},
"credentials": {
"gmailOAuth2": {
"id": "PIMDNhXNj8Zyiz3G",
"name": "Gmail account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "1b5d88c6-fe8f-4984-9e9e-19789ba76c60",
"name": "已批准",
"type": "n8n-nodes-base.gmail",
"position": [
752,
-192
],
"webhookId": "fe2cb3ee-3c0f-4429-ac5c-9482a923f808",
"parameters": {
"sendTo": "={{ $json.employeeEmail }}",
"message": "Hi, Your expense for {{ $json.Amount }} has been approved",
"options": {},
"subject": "=Expense Approved - ${{ $json.amount }}"
},
"credentials": {
"gmailOAuth2": {
"id": "PIMDNhXNj8Zyiz3G",
"name": "Gmail account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "6382a19b-08de-4466-9013-696d5ffac4db",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
-208
],
"parameters": {
"height": 432,
"content": "📩 触发器:新费用提交"
},
"typeVersion": 1
},
{
"id": "5b890f09-277e-41e6-9628-dd6907b14e5f",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-912,
-160
],
"parameters": {
"width": 192,
"content": "🧾 解析和标准化数据"
},
"typeVersion": 1
},
{
"id": "fe3ea799-b6f3-48f4-bbc4-96623e1e8256",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-720,
112
],
"parameters": {
"width": 208,
"height": 192,
"content": "⚙️ 策略验证"
},
"typeVersion": 1
},
{
"id": "11112b1f-af67-4c7c-86cc-b4ccfe83a249",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-512,
-160
],
"parameters": {
"width": 176,
"content": "🚫 合规性检查"
},
"typeVersion": 1
},
{
"id": "054e826f-590f-4de0-8ccd-d299d2f6e044",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
-368
],
"parameters": {
"width": 576,
"height": 496,
"content": "⚡ 路由决策"
},
"typeVersion": 1
},
{
"id": "6ebce30b-f8d7-4bf2-bdf3-6f33b8363a55",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-224
],
"parameters": {
"width": 208,
"height": 384,
"content": "📊 审计日志记录"
},
"typeVersion": 1
},
{
"id": "f5e44753-7705-41e1-bdac-0158deea26ab",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
-384
],
"parameters": {
"width": 384,
"height": 576,
"content": "🔍 审批检查"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Route Auto": {
"main": [
[
{
"node": "Auto Approve",
"type": "main",
"index": 0
}
],
[
{
"node": "Route Manager",
"type": "main",
"index": 0
}
]
]
},
"Is Approved": {
"main": [
[
{
"node": "Approved",
"type": "main",
"index": 0
}
],
[
{
"node": "Rejection Email",
"type": "main",
"index": 0
}
]
]
},
"Auto Approve": {
"main": [
[
{
"node": "Log to Sheets",
"type": "main",
"index": 0
}
]
]
},
"Log to Sheets": {
"main": [
[
{
"node": "Is Approved",
"type": "main",
"index": 0
}
]
]
},
"Route Manager": {
"main": [
[
{
"node": "Slack Manager",
"type": "main",
"index": 0
}
],
[
{
"node": "Slack Director",
"type": "main",
"index": 0
}
]
]
},
"Set Rejection": {
"main": [
[
{
"node": "Log to Sheets",
"type": "main",
"index": 0
}
]
]
},
"Slack Manager": {
"main": [
[
{
"node": "Log to Sheets",
"type": "main",
"index": 0
}
]
]
},
"Slack Director": {
"main": [
[
{
"node": "Log to Sheets",
"type": "main",
"index": 0
}
]
]
},
"JotForm Trigger": {
"main": [
[
{
"node": "Parse Form Data",
"type": "main",
"index": 0
}
]
]
},
"Parse Form Data": {
"main": [
[
{
"node": "Validate Policy",
"type": "main",
"index": 0
}
]
]
},
"Validate Policy": {
"main": [
[
{
"node": "Check Violations",
"type": "main",
"index": 0
}
]
]
},
"Check Violations": {
"main": [
[
{
"node": "Route Auto",
"type": "main",
"index": 0
}
],
[
{
"node": "Set Rejection",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
AI 驱动的招聘:使用 Jotform 进行简历筛选和候选人路由
简历筛选与候选人路由,使用GPT-4o-mini、Jotform和Google Sheets
If
Set
Code
+10
20 节点Jitesh Dugar
有发票附件?
使用 GPT-4o 欺诈检测和 QuickBooks 自动提取并审批发票
If
Code
Gmail
+9
22 节点Jitesh Dugar
使用 GPT-4 分析和 JotForm 离职面谈自动化员工离职流程
使用 GPT-4 分析和 JotForm 离职面谈实现员工离职流程自动化
If
Set
Code
+6
20 节点Jitesh Dugar
使用 JotForm、GPT-4o-mini 和 Google Workspace 自动化员工入职
使用 JotForm、GPT-4o-mini 和 Google Workspace 实现员工入职自动化
If
Set
Code
+6
14 节点Jitesh Dugar
使用 Jotform、GPT-4 分析和 Gmail 通知自动化贷款预审批
使用 Jotform、GPT-4 分析和 Gmail 通知自动化贷款预审批
If
Set
Code
+6
21 节点Jitesh Dugar
使用GPT-4o-mini、JotForm和Gmail自动化物业维护请求
使用GPT-4o-mini、JotForm和Gmail自动化物业维护请求
If
Set
Code
+6
21 节点Jitesh Dugar
工作流信息
难度等级
高级
节点数量21
分类-
节点类型8
作者
Jitesh Dugar
@jiteshdugarAI Automation Specialist - OpenAI, CRM & Automation Expert with a solid understanding of various tools that include Zapier, Make, Zoho CRM, Hubspot, Google Sheets, Airtable, Pipedrive, Google Analytics, and more.
外部链接
在 n8n.io 查看 →
分享此工作流