😺前言
本文章记录n8n常用操作【mac/win】
补充:n8n是一个开源的自动化工作流工具,允许用户通过可视化界面连接不同的应用程序和服务。截止2025年7月1日20:36:59,github有114k赞
n8n教程:【最强开源AI工作流n8n,上千插件+模板,效率起飞-哔哩哔哩】 b23.tv/S8aGWN9
本文无特殊说明的话,
n8n版本一律按1.71.3
😾✊上号!
mac
-
【字段定义】右侧组件栏搜索“set”,选择“Edit Fields (Set)”进行字段的定义。
-
【打印内容进行调试】右侧组建栏搜索“Code”,可以编写js/python代码。使用console.log()【或者使用python的print也可以进行打印】打印内容的话,可以在控制台查看打印结果。
-
【如何将n8n导出成一份json文件】:首先进入工作流的编辑页面,点击右上角的三个点,选择“Download”即可。
-
【如何将外部的工作流json文件导入】:首先创建一个工作流,依然是点击右上角的三个点,然后点击“Import from File”即可。
-
【测试工作流:command+回车】
-
【esc】快速关闭一个打开的节点
-
【Shift + 鼠标轮滚】实现画布的左右滚动。
-
点击【tab】进行组件搜索。
-
If组件中,左侧为输入的值,右侧为输出的值,中间则是组件的配置页面。如果判断逻辑中需要使用到输入的那一侧的值,可以直接进行拖动!
-
【command+鼠标滚轮】放大缩小画布。
-
如果因为死循环导致了n8n卡死,使用【docker compose restart】进行重启。
-
可以使用【if组件+code组件】快速实现循环功能!
-
按住【command】,鼠标可对画布进行拖动。
-
推荐使用【子工作流】进行逻辑的封装:调用方搜索【Execute Workflow】实现调用其他工作流,被调用方搜索【Execute Workflow Trigger】作为初始步骤实现被其他工作流调用。子工作流可以使用【code】节点返回数据,返回的数据父工作流可以获取并使用。
-
双击打开节点,点击中间部分内容的右上角,点击【Test step】,此时可以查看左右两部分内容,分别是【输入数据】与【输出数据】,组件就是当前节点的处理逻辑了,很直观。
-
推荐一个不错的实践:当要开发多个子工作流的时候,建议在主工作流添加【MAIN】前缀,子工作流添加【SUB】前缀,需要开发子工作流的时候,可以单独开一个浏览器标签,开发完成关闭即可,然后回到主工作流进行调用。调用子工作流的节点明明可以叫做以“【CALL】【SUB】xxx”开头。
-
一般新增字段的场景下,都推荐使用下方的数据操作模板,注意不要覆盖流中的数据:
for (const item of $input.all()) { item.json.myNewField = 1; } return $input.all(); -
【什么都不做】的时候,使用节点【No Operation, do nothing】
-
流中使用数字类型会报错,需使用字符串。
-
节点被双击打开之后,最左侧和最右侧会显示其前后的节点,可以鼠标左键单击进行切换。
-
左键长按选中多个节点之后松开,多个节点会保持选中状态,此时可以对这些被选中的节点进行拖动(这些被选中的节点会被包在一个方框中)。
-
【code】节点中,使用【js】脚本的【
$input.all()[0].json】获取前一个节点所传递来的数据。需要根据前方的数据进行js脚本编写的时候,如果使用A.b的方式报错,可使用A[b]的方式,其中b为类似于$input.all()[0].json这样的代码。 -
如果你刚上手n8n,推荐你将数据获取的操作一个个封装在子工作流中,并且放在主工作流的前方。这样做可以减少后续切换工作流的次数,加快开发时间。
-
使用code节点进行参数的赋值时,如果赋值的内容为
undefined的时候,他会被忽略。所以当你设置了一个字段但是发现不生效,可以检查下你是不是在某处不小心取到了undefined进而导致数据的丢失。 -
子工作流入口设置【mock data】用于进行测试
-
父工作流调用子工作流,调用子工作流的那个node不能单步调试,只能全局调试。
-
一个工作流,可以有多个触发方式:如由其他工作流调用触发,或者是手动触发。
-
打开一个节点之后,想要关闭的时候点击组件外部的空白即可,不用特地去找
X叉号 -
一个推荐的实践:将变量信息尽量全部放置在最外层的工作流,子工作流需要了,如有必要可以对父工作流中的变量配置进行增删改操作,尽量地解耦
-
有的时候点击
comman+s会被识别为保存html页面,感觉是个bug,这时候可以切换为手动点击save按钮。 -
建议使用code节点进行变量的管理。使用的时候可以直接
return以返回数据。后续使用的时候可以在同一个工作流中的另一个code节点使用let mydata = $('define field').all()来获取同一个工作流中,指定节点的数据,上面的define field其实就是当前工作流中的一个code节点的节点名称了。这样就很方便了,也就是我们后续在定义变量的时候,直接使用code节点return即可,免去了考虑当前流中其他数据的心智负担。注意,code节点似乎只能获取同一个工作流中的code节点的数据。所以让你需要拿到的数据的那个地方不是code节点,我们可以造一个code节点接住数据,用于后续的code节点进行使用。还是很方便的。 -
配合chatgpt理解业务:将左侧数据、中间逻辑、右侧数据发给chatgpt,然后问中间的逻辑部分发挥了什么作用。避免全部截图,效果不太稳定。中间的逻辑部分无法使用文字表达的时候再去截图
-
Xml转换成json数据,直接使用xml节点进行转换
-
Csv文件转换成json文件,先使用convert to file转换为binary,然后再使用 extract from file转换为json即可。
-
使用谷歌浏览器进行n8n开发的时候,有时候会出现频繁需要验证的情况,Safari浏览器没有发现此问题。后续遇到类似的情况可以考虑更换浏览器。
-
仅仅使用code节点就可以实现循环:首先使用一个code节点A写死相关变量的初始值,如
// Loop over input items and add a new field called 'myNewField' to the JSON of each one for (const item of $input.all()) { item.json.rowBegin = 1; item.json.rowEnd = 100; item.json.rowsPerBatch = 100; } return $input.all();然后需要在这个写死的节点的后面新增一个节点B用于存储A节点所定义的值。(此处定义的内容会被后面的节点C进行数据的【获取】和【修改】)
获取:
const dataFromNode = $node["constants"].json;【经过测试,各个版本获取指定节点的操作会不一样,如果你无法通过此操作获取指定节点的数据,需要先检查一下n8n版本是否与本文一致】然后进行修改,然后直接覆盖此节点B的值
节点C获取节点B的数据,并对节点B进行维护,可能是【页码的更新】之类的。然后以C为起点,B为重点,即可实现循环。可按需在获取数据的后方添加是否终止的判断操作,如获取到的数据是否是空的,空的话则视为分页结束。
- 获取指定节点的数据:
const prevData = $(指定的节点名字).first().json。const dataFromNode = $node["xxx"].json; - N8n日志的位置:容器的/home/node/.n8n
- n8n的的便利贴似乎是根据各个便利贴的面积大小来决定谁该放在最底层,谁该放在上层
- 按住键盘的【command】键,然后点击多个节点,可以实现多个组件的选择,后面可以只对选中的这些节点进行操作:如拖动或删除。
- Code节点中,如果内容较多,鼠标按
command + a的时候可能会无法全部选中,这个时候多次点击command + a即可实现数据的全部选中。 - 在迁移boomi的时候,遇到REST Client的时候,可以先将其请求用ai转成curl,然后使用拿到的curl,再导入n8n中的HTTP Request节点。
- 鼠标移入节点,然后点击节点上方的【启动电源】样式的图标之后,可以控制节点的【生效】与【不生效】。而点击第一个的运行图标,n8n只会运行到当前节点处,其他不必要的地方就运行不到了。
win
- 【ctrl + 回车】执行工作流
- 【esc】快速关闭打开的节点
- 按住【ctrl】,鼠标可拖动画布
- 【ctrl配合减号】实现对页面的放大缩小
- 【ctrl+鼠标滚轮】或者【直接点击+或-】实现画布的放大缩小
- 【backspace】可直接删除选中的节点
- 点击左下角的【help】,再点击【About n8n】查看n8n的版本。
- 【shift+鼠标滚轮】实现画布的横向滚动
- 子工作流中造初始化数据:将父工作流的执行结果复制到子工作流入口的入参处即可。
- 可使用【switch】节点进行环境变量的管理。如dev、prod。(此外,n8n还允许对各个输出分支进行重命名)
- n8n中要判断某一个字段是否为空字符串,表达式不要写成
"",而是放空即可。 - 一个工作流可以设置多种触发方式。
👋最后
😾✊下号!!