n8n 是一个开源的工作流自动化平台,允许用户通过拖放节点来创建复杂的自动化流程。n8n 提供了丰富的内置节点和社区贡献的节点,支持与各种 API、数据库和其他服务集成。本文将详细介绍 n8n 中节点的使用方法,包括如何添加节点、配置节点、连接节点以及调试和优化工作流。
1. n8n 基本概念
1.1 工作流(Workflow)
工作流是由多个节点组成的自动化流程,每个节点代表一个操作,如发送电子邮件、处理数据、调用 API 等。
1.2 节点(Node)
节点是工作流中的基本构建块,每个节点执行特定的操作。节点可以分为输入节点、处理节点和输出节点。
1.3 输入节点(Trigger Nodes)
输入节点触发工作流的执行。常见的输入节点包括定时器、Webhook、事件触发器等。
1.4 处理节点(Process Nodes)
处理节点对数据进行处理和转换,如数据映射、过滤、聚合等。
1.5 输出节点(Action Nodes)
输出节点执行最终的操作,如发送电子邮件、保存数据到数据库、调用外部 API 等。
1.6 连接(Connection)
连接用于将节点链接在一起,定义数据流动的方向。每个节点可以有多个输入和输出连接。
2. 安装和启动 n8n
2.1 使用 Docker 安装
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
2.2 使用 npm 安装
npm install -g n8n
n8n
2.3 访问 n8n
打开浏览器,访问 http://localhost:5678 即可进入 n8n 的 Web 界面。
3. 创建和编辑工作流
3.1 创建新工作流
- 登录 n8n Web 界面。
- 点击左侧菜单中的“+ New Workflow”按钮。
- 输入工作流名称,点击“Create”。
3.2 添加节点
- 在画布上点击右键,选择“Add Node”。
- 在搜索框中输入节点名称,如“HTTP Request”、“Set”等。
- 选择所需的节点并拖放到画布上。
3.3 配置节点
- 选中节点后,在右侧的“Node Parameters”面板中进行配置。
- 根据节点类型填写相应的参数,如 URL、HTTP 方法、请求体等。
3.4 连接节点
- 选中源节点的输出端口(通常在节点底部)。
- 将鼠标拖动到目标节点的输入端口(通常在节点顶部)。
- 放开鼠标,连接线将自动创建。
3.5 保存工作流
- 点击右上角的“Save”按钮。
- 输入工作流名称(如果尚未命名),点击“Save”。
4. 常见节点类型和使用示例
4.1 输入节点(Trigger Nodes)
4.1.1 HTTP Request Trigger
用于接收 HTTP 请求并触发工作流。
- 搜索并添加“HTTP Request”节点。
- 配置节点:
- Method: 选择 HTTP 方法(GET、POST 等)。
- Path: 设置请求路径。
- 连接后续节点,处理请求数据。
4.1.2 Cron Trigger
用于定时触发工作流。
- 搜索并添加“Cron”节点。
- 配置节点:
- Mode: 选择触发模式(Every Minute、Every Hour 等)。
- Timezone: 设置时区。
- 连接后续节点,执行定时任务。
4.2 处理节点(Process Nodes)
4.2.1 Function Node
用于执行自定义 JavaScript 代码。
-
搜索并添加“Function”节点。
-
配置节点:
- Function Code: 编写 JavaScript 代码,处理输入数据。
-
示例代码:
return items.map(item => { item.json.newField = "New Value"; return item; });
4.2.2 Set Node
用于设置或修改数据字段。
- 搜索并添加“Set”节点。
- 配置节点:
- Name: 字段名称。
- Value: 字段值。
- 示例配置:
- Name:
newField - Value:
New Value
- Name:
4.3 输出节点(Action Nodes)
4.3.1 HTTP Request Node
用于发送 HTTP 请求。
- 搜索并添加“HTTP Request”节点。
- 配置节点:
- URL: 请求地址。
- Method: HTTP 方法(GET、POST 等)。
- Headers: 请求头。
- Body: 请求体(适用于 POST 请求)。
- 示例配置:
- URL:
https://api.example.com/data - Method:
POST - Body:
{"key": "value"}
- URL:
4.3.2 Send Email Node
用于发送电子邮件。
- 搜索并添加“Send Email”节点。
- 配置节点:
- Service: 选择邮件服务提供商(Gmail、Outlook 等)。
- Authentication: 配置认证信息。
- To: 收件人邮箱。
- Subject: 邮件主题。
- Body: 邮件正文。
- 示例配置:
- Service:
Gmail - To:
example@example.com - Subject:
Hello - Body:
This is a test email.
- Service:
5. 调试和优化工作流
5.1 查看日志
- 点击右侧的“Logs”面板。
- 查看工作流执行过程中的日志信息,帮助调试问题。
5.2 测试节点
- 选中节点后,点击右侧的“Test”按钮。
- 输入测试数据,查看节点的输出结果。
5.3 优化性能
- 批量处理:使用批处理节点减少请求次数,提高性能。
- 缓存数据:使用缓存节点存储临时数据,避免重复计算。
- 并发执行:使用并发节点同时执行多个操作,提高效率。
5.4 使用表达式
n8n 支持使用表达式动态生成参数值。
- 在参数输入框中输入
={{expression}}。 - 示例表达式:
={{$node["Function"].json.newField}}={{new Date().toISOString()}}
6. 社区贡献节点
n8n 拥有庞大的社区贡献节点库,可以满足各种需求。
6.1 查找节点
- 点击左侧菜单中的“Nodes”选项。
- 使用搜索框查找所需节点。
- 点击“Install”按钮安装节点。
6.2 常见社区贡献节点
6.2.1 Google Sheets Node
用于操作 Google Sheets。
- 安装节点:
Google Sheets - 配置节点:
- Authentication: 配置 Google API 认证。
- Operation: 选择操作(Read、Write 等)。
- Spreadsheet ID: 表格 ID。
- Range: 单元格范围。
6.2.2 Slack Node
用于与 Slack 集成。
- 安装节点:
Slack - 配置节点:
- Authentication: 配置 Slack API 认证。
- Operation: 选择操作(SendMessage、GetChannelMessages 等)。
- Channel: 频道 ID。
- Message: 消息内容。
7. 示例:构建一个简单的数据处理工作流
下面是一个使用 n8n 构建的简单数据处理工作流示例,该工作流从 HTTP 请求接收数据,处理数据并发送电子邮件。
7.1 工作流概述
- HTTP Request Trigger: 接收 HTTP POST 请求。
- Function Node: 处理接收到的数据。
- Send Email Node: 发送处理后的数据作为电子邮件。
7.2 步骤详解
7.2.1 添加 HTTP Request Trigger
- 搜索并添加“HTTP Request”节点。
- 配置节点:
- Method:
POST - Path:
/process-data
- Method:
7.2.2 添加 Function Node
-
搜索并添加“Function”节点。
-
配置节点:
- Function Code: 处理接收到的数据。
return items.map(item => { const inputData = item.json; inputData.processed = true; return item; });
7.2.3 添加 Send Email Node
-
搜索并添加“Send Email”节点。
-
配置节点:
- Service:
Gmail - Authentication: 配置 Gmail 认证。
- To:
example@example.com - Subject:
Processed Data - Body: 使用表达式动态生成邮件正文。
Processed Data: {{JSON.stringify($node["Function"].json)}} - Service:
7.2.4 连接节点
- 将“HTTP Request”节点的输出连接到“Function”节点的输入。
- 将“Function”节点的输出连接到“Send Email”节点的输入。
7.2.5 测试工作流
- 保存工作流。
- 使用 Postman 或其他工具发送 HTTP POST 请求到
http://localhost:5678/process-data。 - 检查收件箱,确认收到处理后的数据邮件。
7.3 示例代码
以下是完整的示例代码,展示如何在 n8n 中配置和连接这些节点。
7.3.1 HTTP Request Trigger
{
"parameters": {
"method": "POST",
"path": "/process-data"
},
"type": "trigger",
"typeVersion": 1,
"name": "HTTP Request",
"displayName": "HTTP Request",
"position": [100, 100]
}
7.3.2 Function Node
{
"parameters": {
"functionCode": "return items.map(item => {\n const inputData = item.json;\n inputData.processed = true;\n return item;\n});"
},
"type": "function",
"typeVersion": 1,
"name": "Function",
"displayName": "Function",
"position": [300, 100]
}
7.3.3 Send Email Node
{
"parameters": {
"service": "gmail",
"authentication": "your-auth-id",
"to": "example@example.com",
"subject": "Processed Data",
"body": "Processed Data: {{JSON.stringify($node[\"Function\"].json)}}"
},
"type": "emailSend",
"typeVersion": 1,
"name": "Send Email",
"displayName": "Send Email",
"position": [500, 100]
}
7.3.4 连接节点
- 将“HTTP Request”节点的输出连接到“Function”节点的输入。
- 将“Function”节点的输出连接到“Send Email”节点的输入。