别让海量数据把你淹没:你的 Google Sheets 还在手动筛选吗?
笔者在 N8N大学 带学员时,见过太多这样的场景:每天早上一睁眼,就要打开一份几百上千行的 Google Sheets 报表,眼睛在屏幕上来回扫描,手动复制粘贴出那几行关键数据。这不仅枯燥,还极易出错。一旦漏掉一行,可能就是真金白银的损失。
自动化的核心价值在于“解放”。当我们把数据从 Google Sheets 拉取到 n8n 时,如果只是简单地把整张表搬运一遍,那毫无意义。真正的高手,懂得在数据流动的管道中设置“筛子”,只让我们需要的金子流过。
今天,笔者就带你硬核拆解 n8n 中的 Google Sheets 节点,特别是配合 Filter(过滤器) 节点,如何实现毫秒级的精准数据筛选。无论你是处理订单、客户名单还是库存表,这套逻辑都能让你事半功倍。
核心实操:三步搭建精准筛选管道
在开始之前,请确保你已经在 n8n 中配置好了 Google Sheets 的 OAuth 认证。如果还没配置好,请先去 N8N大学 的往期教程里补一下课。接下来,我们直接进入实战。
步骤一:配置 Google Sheets 节点(数据入口)
首先,我们在画布上拖入一个 Google Sheets 节点,模式选择 “读取行” (Read Rows)。
关键参数设置:
- 凭证 (Credentials):选择你配置好的 Google 账号。
- 电子表格 (Spreadsheet):选择你要读取的目标文件。
- 工作表 (Sheet Name):指定具体的工作表。
笔者的建议: 在这个阶段,不要勾选“全部行”或设置太大的行范围。我们的策略是先尽可能把原始数据拉取出来,然后交给后续的节点去处理。这样做的好处是灵活性高,以后修改筛选逻辑时,不需要回头改动数据源。
步骤二:连接 Filter 节点(设置筛子)
这是整条工作流的灵魂。在 Google Sheets 节点之后,添加一个 Filter(过滤器) 节点。
当数据从 Google Sheets 流入 Filter 节点时,它会变成一个 JSON 数组。每一行数据就是一个对象。我们需要在 Filter 节点里定义规则,决定哪些“对象”可以继续往下走。
场景实战:假设我们有一张“订单表”,需要筛选出状态为“已支付”且金额大于 100 元的订单。
在 Filter 节点的 Rules(规则) 设置中:
- 点击“添加规则”。
- 字段 (Field):输入 `状态`(注意:必须与表格中的列名完全一致,包括大小写)。
- 条件 (Condition):选择 String > 等于。
- 值 (Value):输入
"已支付"(如果是文本,建议用双引号包裹,如果是变量则不需要)。
如果你需要“且 (AND)”的关系,继续添加第二条规则:
- 字段 (Field):输入 `金额`。
- 条件 (Condition):选择 Number > 大于。
- 值 (Value):输入
100(数字类型不需要引号)。
这样设置后,只有同时满足这两个条件的数据行,才会流向下一个节点。不满足的数据会被直接拦截,不会产生任何后续操作。
步骤三:下游处理与验证
在 Filter 节点之后,通常会连接 IF 节点或者直接连接 HTTP Request(比如推送到 webhook)、Email 节点等。
为了验证筛选是否成功,最简单的办法是在 Filter 后面接一个 Set 节点(或者直接用 Debug 节点),查看输出的数据量。
- 如果输出数量明显少于输入数量,说明过滤器起了作用。
- 双击进入 Filter 节点,点击右上角的 “Execute Node” (执行节点),你可以直接在节点内预览输入和输出的数据对比,这是调试神器。
进阶技巧:处理复杂逻辑与动态条件
基础的等于、大于很好理解,但实战中我们往往遇到更复杂的情况。
处理“包含”与“正则”
有时候我们需要筛选包含特定关键词的行(例如:备注中包含“加急”)。在 Filter 节点的条件中,选择 String > 包含 (Contains),值输入 加急 即可。
如果你需要更高级的匹配,比如“以某个数字开头”或者“特定格式的邮箱”,Filter 节点内置了 Regex(正则表达式) 匹配功能。这需要一点正则基础,但能解决 99% 的刁钻筛选需求。
利用表达式实现动态筛选
有时候筛选条件不是固定的,而是由上一步决定的。例如,你从一个 Webhook 接收到一个参数,根据这个参数去筛选 Google Sheets。
在 Filter 节点的“值”输入框中,点击旁边的变量图标,选择表达式。比如:{{ $json.user_id }}。这样,每次运行时,过滤器都会拿当前数据流中的 user_id 去跟表格里的列进行比对。
避坑指南:这些细节决定成败
在 N8N大学 的实战中,很多学员在 Filter 节点上栽过跟头,通常不是逻辑错误,而是数据格式问题。
1. 数据类型陷阱
Google Sheets 读取回来的数字,在 n8n 中可能被识别为字符串(String)或数字(Number),这取决于单元格格式和 n8n 的解析。
避坑: 如果你发现明明数字是 100,却筛选不出 100,尝试在 Filter 节点的“条件”中,将“数字”比较改为“字符串”比较(输入值加上引号),或者使用 Set 节点强制转换数据类型。
2. 空值(Null)报错
如果表格中某一行的筛选列是空的,直接使用“等于”或“大于”等逻辑,n8n 可能会报错或直接中断流程。
避坑: 在设计规则时,考虑添加 OR(或) 逻辑。例如:当字段不为空时进行比较,或者专门添加一条规则处理空值的情况。
FAQ:关于 Google Sheets 筛选的常见问题
Q1: Google Sheets 节点读取数据有行数限制吗?
有的。n8n 的 Google Sheets 节点在单次读取时通常有性能上限(比如几千行)。如果你的表格非常大(几万行),建议使用“工作表范围”参数分批读取,或者在 Google Sheets 中先通过公式筛选出一个中间表,再让 n8n 读取这个中间表。
Q2: 为什么我筛选“包含”某文字没生效?
检查大小写。n8n 的 Filter 默认是区分大小写的。如果需要忽略大小写,建议在 Filter 之前使用 Function 节点写一行 JS 代码,把目标字段转为小写,再进行比较。
Q3: 筛选出来的数据如何批量更新回表格?
这是一个常见需求。流程通常是:Google Sheets (读取) -> Filter (筛选) -> 循环 (Loop) -> Google Sheets (更新行)。注意在“更新行”节点中,你需要匹配每一行的 ID 或者行号,确保能精准定位并修改。
总结与资源
掌握 n8n 的 Google Sheets 节点与 Filter 节点的配合,本质上是掌握了数据清洗的第一道关卡。它能让你从“数据的搬运工”转变为“数据的指挥官”。
不要害怕试错,n8n 的可视化界面让我们可以随时修改规则并重新执行。去 N8N大学 (n8ndx.com) 找几个真实的案例模板跑一跑,你会发现,自动化处理表格数据比你想象的要简单得多。