n8n实战营Day2课时2:Loop+Merge节点进阶·Excel批量校验实操

我将围绕"循环批量处理+多分支聚合"核心逻辑撰写博文,先拆解Loop与Merge节点的配置技巧,再通过Excel批量校验实操落地知识,结构图采用CSDN适配的简洁语法确保正常显示。

n8n实战营Day2课时2:Loop+Merge节点进阶·Excel批量校验实操

上一节我们掌握了HTTP请求与条件分支的用法,但企业场景中更常见"批量处理"需求------比如批量读取Excel中的客户信息、逐个校验格式后汇总结果。本节课的核心就是解决这类问题:Loop节点实现"重复执行同一操作",Merge节点搞定"多分支数据汇总",最终通过"Excel批量数据校验"实战,让你掌握从"单条处理"到"批量落地"的关键能力。

一、Loop节点:批量处理的"自动化流水线"

Loop节点本质是"循环执行器",能将数组形式的数据拆分为单条,依次传递给下游节点处理,处理完成后再进入下一条,直到所有数据都执行完毕。比如Excel中有100条客户数据,Loop能自动实现"取第1条→校验→取第2条→校验→...→取第100条→校验"的全自动化。

1.1 核心配置:循环模式与触发条件

n8n的Loop节点有两种核心模式,90%的批量场景用"For Each Item"即可,二者区别如下:

循环模式 核心逻辑 适用场景 配置要点
For Each Item(默认) 将数组数据"逐条拆分",依次执行下游逻辑 批量校验、批量发送、批量查询(如100条数据逐个校验) 选择"Array to Loop Through"(待循环数组,如{{ $node["Excel Reader"].json["data"] }})
While(条件循环) 满足指定条件时持续循环,不满足则停止 动态次数循环(如"直到获取到非空数据为止") 设置"Condition"(循环条件,如{{ $node["HTTP Request"].json["data"] }}为空)

1.2 关键避坑点与优化技巧

  • 避坑点1:循环数据必须是数组

    Loop节点仅能处理数组格式数据,若上游节点输出非数组(如单条数据),需先通过"Split In Batches"节点转换为数组,否则会报错"Not an array"。

  • 避坑点2:下游节点数据引用

    循环过程中,下游节点需引用"Loop Item"(当前循环项)的数据,格式为{``{ $json["字段名"] }},而非{``{ $node["Loop"].json["字段名"] }}(后者是整个数组,非单条数据)。

  • 优化技巧:设置循环延迟

    批量调用API时(如批量发送短信),为避免触发API频率限制,可在Loop下游加"Delay"节点,设置500ms延迟(根据API文档调整)。

  • 优化技巧:循环结果收集

    在Loop内部通过"Set"节点标记每条数据的处理状态(如"校验通过""格式错误"),方便后续汇总统计。

1.3 Loop节点工作流程图

结构图格式[
是 否 上游节点输出数组数据(如Excel的100条记录) Loop节点模式:For Each Item 拆分下一条数据 第1条数据 下游处理逻辑(校验/发送/查询) 标记处理状态(通过/失败) 是否还有数据? 循环结束进入Merge节点聚合

]

文字版逻辑:上游输出数组→Loop拆分单条→下游处理→标记状态→循环至所有数据完成→进入聚合环节。

二、Merge节点:多分支数据的"聚合器"

批量处理中,数据往往会按条件分成多个分支(如"校验通过""手机号格式错误""邮箱格式错误"),Merge节点的作用就是将这些分支的结果"合并成一个数组",方便后续汇总导出或统计分析。它解决了"多分支数据分散,难以统一处理"的痛点。

2.1 核心配置与聚合模式

Merge节点的核心是"选择聚合的分支"和"定义聚合后的数据结构",常用聚合模式为"Combine"(合并为数组),配置步骤如下:

  1. 添加Merge节点,选择"Mode"为"Combine"(合并模式);

  2. 点击"Add Input",依次添加需要聚合的分支(如"校验通过分支""手机号错误分支""邮箱错误分支");

  3. (可选)配置"Output Field",自定义聚合后的数据字段名(默认为"data");

  4. 聚合后的数据会以数组形式输出,每个元素包含对应分支的处理结果。

2.2 字段匹配技巧与场景应用

  • 技巧1:统一多分支字段结构

    聚合前需确保各分支输出的字段一致(如都包含"姓名""手机号""处理状态"),可在每个分支末尾加"Set"节点统一字段,避免聚合后数据缺失。

  • 技巧2:添加分支标识

    在各分支通过"Set"节点添加"分支类型"字段(如"校验通过""手机号错误"),聚合后可快速筛选不同状态的数据。

  • 典型场景1:批量校验结果汇总

    将"通过""错误"分支数据聚合,导出为Excel统计表,包含每条数据的状态。

  • 典型场景2:多来源数据整合

    将Excel、表单、数据库三个来源的客户数据,通过Merge节点聚合为一个数组,再统一处理。

2.3 Loop+Merge协同工作流程图

结构图格式[
双格式正确 手机号错误 邮箱错误 Excel读取数组数据 Loop节点拆分单条数据 数据校验逻辑(手机号+邮箱格式校验) 校验结果 分支1:标记"校验通过 分支2:标记"手机号错误 分支3:标记"邮箱错误 Merge节点模式:Combine 聚合为统一数组包含所有数据及状态 导出至Excel/统计分析

]

文字版逻辑:Excel数据经Loop拆分校验→按结果分多分支→各分支标记状态→Merge聚合所有结果→输出统一数组用于后续处理。

三、实操:批量读取Excel数据并逐个校验格式

结合Loop与Merge节点,我们搭建企业高频场景:读取Excel中的客户数据(含姓名、手机号、邮箱),逐个校验手机号(11位数字)和邮箱(含@)格式,最后聚合所有数据及校验结果,导出为新Excel。

3.1 准备工作

  • 1个n8n环境;

  • 待处理Excel文件:包含3列"姓名""手机号""邮箱",提前保存至本地(如"客户数据.xlsx");

  • 安装"Excel Reader"和"Excel Writer"节点(n8n默认已集成,若缺失在"节点库"中搜索安装)。

3.2 分步搭建:6个节点完成全流程

步骤1:添加"Excel Reader"节点(读取批量数据)
  1. 新建工作流→添加"Excel Reader"节点;

  2. 配置参数:

  • 选择"File Source"为"Upload File"→点击"Upload"上传本地Excel文件;
  • "Sheet Name":输入Excel工作表名称(如"Sheet1");
  • 勾选"First Row is Header"(第一行为表头);
  1. 点击「Execute Node」测试,确认Output输出数组格式数据,每条包含姓名、手机号、邮箱字段。
步骤2:添加"Loop"节点(拆分单条数据)
  1. 添加"Loop"节点→选择"Mode"为"For Each Item";

  2. 配置"Array to Loop Through"为{``{ $node["Excel Reader"].json["data"] }}(引用Excel读取的数组);

  3. 测试节点,确认"Current Item"显示单条数据(如第一条客户信息)。

步骤3:添加"Regex"节点(校验手机号格式)
  1. 点击Loop节点右侧「+」→搜索"Regex"→添加"Regex"节点(正则表达式校验);

  2. 配置参数:

  • "Field to Match":选择"String"→值为{``{ $json["手机号"] }}(当前循环项的手机号);
  • "Regex Pattern":输入^1[3-9]\d{9}$(11位手机号正则表达式);
  • 勾选"Case Insensitive"(不区分大小写,此处无影响但建议勾选);
  1. 测试节点,若手机号正确则"Match"为true,否则为false。
步骤4:添加"IF"节点(多条件判断分支)
  1. 添加"IF"节点→配置"Condition"为"Multiple Conditions"(多条件判断);

  2. 设置两个条件(逻辑关系为"AND"):

  3. 手机号Regex节点的"Match"为true({``{ $node["Regex"].json["match"] }} == true);

  4. 邮箱包含"@"({``{ $json["邮箱"] }} contains "@");

  5. 此IF节点会生成3个分支:True(双格式正确)、False(至少一项错误)、以及False分支下再嵌套IF节点判断"手机号错误"还是"邮箱错误"。

步骤5:各分支添加"Set"节点(标记处理状态)
  1. True分支(双格式正确)

    添加"Set"节点→保留姓名、手机号、邮箱字段,新增"处理状态"字段,值为"校验通过"。

  2. False分支1(手机号错误)

    嵌套IF节点判断"Regex节点Match为false"→添加"Set"节点,"处理状态"值为"手机号格式错误"。

  3. False分支2(邮箱错误)

    嵌套IF节点判断"邮箱不包含@"→添加"Set"节点,"处理状态"值为"邮箱格式错误"。

步骤6:添加"Merge+Excel Writer"节点(聚合导出)
  1. Merge节点聚合

    添加"Merge"节点→Mode为"Combine"→Add Input依次添加三个分支的"Set"节点→测试确认聚合为包含所有数据及状态的数组。

  2. Excel Writer节点导出

    添加"Excel Writer"节点→选择"File Destination"为"Download"(下载文件);

    配置"Data to Write"为{``{ $node["Merge"].json["data"] }}(聚合后的数据);

    点击执行,n8n会自动生成新Excel文件供下载,包含每条数据的校验状态。

3.3 实操避坑指南

复制代码
  1. Excel读取无数据?→ 检查"Sheet Name"是否与Excel一致(区分大小写),确认第一行是表头且勾选"First Row is Header";
  2. 正则校验全部失败?→ 检查Regex节点的"Field to Match"是否引用当前循环项({{ $json["手机号"] }}),而非上游数组;
  3. Merge聚合字段缺失?→ 确保三个分支的"Set"节点保留了相同的基础字段(姓名、手机号、邮箱);
  4. Excel导出乱码?→ 在Excel Writer节点的"Advanced Options"中设置"Encoding"为"UTF-8"。

四、核心总结与下节预告

4.1 核心知识点

  • Loop节点:For Each Item模式处理固定数组(批量场景首选),数据引用用{{ $json["字段名"] }};

  • Merge节点:Combine模式聚合多分支数据,聚合前需统一各分支字段结构;

  • 批量处理核心流程:读取数组→Loop拆分→单条处理→多分支标记→Merge聚合→结果导出。

4.2 下节预告

Day2课时3我们将聚焦"错误处理与工作流优化",学习Catch Error节点捕获异常、工作流精简技巧,为批量处理工作流添加"异常告警"功能,让自动化不仅能跑,还能"稳定跑、出问题早知道"。

如果在Loop循环、Merge聚合或Excel节点配置中遇到问题,欢迎在评论区留下你的操作步骤和报错信息,我会帮你定位解决~

这篇博文聚焦批量处理的核心技术点,实操步骤附带具体配置参数和正则表达式,便于直接复用。你若需要调整校验规则(如增加身份证号校验)或更换文件存储方式(如读取云Excel),可以随时告诉我进行优化。

相关推荐
程序猿追1 小时前
PyTorch算子模板库技术解读:无缝衔接PyTorch模型与Ascend硬件的桥梁
人工智能·pytorch·python·深度学习·机器学习
程序小旭1 小时前
Kaggle平台的使用
人工智能
xieyan08111 小时前
强化学习工具及优化方法
人工智能
秋邱1 小时前
高等教育 AI 智能体的 “导学诊践” 闭环
开发语言·网络·数据库·人工智能·python·docker
数据的世界011 小时前
重构智慧书-第3条:公开有界,保密有度:行事的分寸准则
人工智能
组合缺一1 小时前
Solon AI 开发学习6 - chat - 两种 http 流式输入输出
python·学习·http
许泽宇的技术分享1 小时前
AgentFramework-零基础入门-第08章_部署和监控代理
人工智能·后端·agent框架·agentframework
沐浴露z1 小时前
为什么使用SpringAI时通常用Builder来创建对象?详解 【Builder模式】和【直接 new】的区别
java·python·建造者模式
数据与后端架构提升之路1 小时前
Map-World:用“填空”与“路径积分”重构自动驾驶规划范式
人工智能·自动驾驶·世界模型·锚点预测