核心内容摘要
禁漫天堂:不止是漫画,更是自由灵魂的奇幻殿堂
点赞 关注 收藏 学会了整理了一个n8n小专栏有兴趣的工友可以关注一下 《n8n修炼手册》可视化拖拽是 n8n 的优势但也有明显的局限性。
但实际使用中你大概率会遇到 “现成节点不够用” 的情况这时候「代码节点」就成了你的 “万能补位工具”。
「代码节点」核心可以
总结为 4 个场景个性化逻辑无法通过拖拽实现。
特殊格式数据的处理需求。
弥补 n8n 没有的内置功能。
简化工作流减少节点冗余简单来说可视化节点能搞定的优先用拖拽可视化节点搞不定的就用代码节点补位两者结合才能发挥 n8n 的最大威力。
本文介绍「代码节点」里常用的内置变量和方法。
代码节点的用法讲解在 n8n 中可以搜索code就能找到「代码节点」。
n8n 的代码节点支持两种编程语言JavaScript默认最常用和Python。
这两种语言上手都很简单我之前写过一篇《Python 快速入门篇》想在 n8n 用 Python 写代码的工友可以看看。
之后也许会再开一个新坑聊聊 JS 的算法以及容易出错的点毕竟 JS 可是我以前的淘金铲。
「代码节点」提供了2种运行模式ModeRun Once for All ltems这是默认设置。
当你的工作流程运行时代码节点中的代码会执行一次无论输入项多少。
Run Once for Each Item如果你想让代码对每个输入项目运行一次就选择这个。
代码节点的工作逻辑很简单就三件事获取输入数据 → 处理数据 → 输出数据这是使用代码节点的关键必须先搞懂。
在使用「代码节点」之前我建议你先收藏一下 n8n 代码节点的文档 https://docs.n8n.io/code/code-noden8n 的代码运行环境提供了一些针对工作流常用到的内置函数和内置变量它们能大大减少你的原生代码量。
所以一定要多看 n8n 的官方文档。
内置变量通常是以$符号开头的念念叨叨一句死去的 JQuery 记忆被踢了一脚。
在代码编辑器里输入$编辑器就会提示有哪些内置函数和变量可以使用非常方便。
前面说了它能节省我们的原生代码量到底有多节省呢比如输出今天的日期使用 n8n 内置变量这么写而且语义非常清晰⬇️console.log($today)用JS原生的方法要这么写⬇️/** * 获取当天的年、月、日格式化版本个位数补零 * param {boolean} [returnStringfalse] - 是否返回格式化字符串如
默认返回对象 * returns {Object|string} 格式化后的年月日对象或字符串 */functiongetCurrentFormattedDate(returnStringfalse){constnownewDate();constyearnow.getFullYear();// 月份补零先1转为实际月份再转为字符串不足2位则前面补0constmonthString(now.getMonth()
.padStart(2,
;// 日期补零同理不足2位补0constdayString(now.getDate()).padStart(2,
;// 根据参数返回对应格式if(returnString){return${year}-${month}-${day};}return{year,month,day};}console.log(getCurrentFormattedDate(true))使用console.log()可以在浏览器控制台输出内容。
比如上面的console.log($today)按 F12 打开浏览器控制台切换到Console面板点击运行代码就能看到控制台输出了对应的内容。
读取上一个节点输入的数据用到「代码节点」大概率是要处理数据的了所以接收上一个节点传入的数据也是很常见的操作。
n8n 提供了一堆内置方法让我们很方便的获取上一个节点传入的数据。
这个文档也要收藏 https://docs.n8n.io/code/code-node如果你想获取「代码节点」前面任意一个节点的数据其实不需要记住代码只要会用鼠标拖拽就行了。
比如我这个工作流用「HTTP 节点」请求了一些数据并且给这个「HTTP 节点」重命名为GetUserInfo然后再接一个「Edit Fields 节点」里面设置了一个name_zh数据。
在最后的「代码节点」里要获取「GetUserInfo 节点」的数据只需要拖进来就行了。
可以看到拖进来之后它是以$(GetUserInfo)的方式找到这个节点也就是通过节点名的方式找到它。
first()是这个节点的第一项数据节点返回的数据是数组这些在官方文档都有提到。
输出结果可以打开浏览器控制台看看。
常用方法n8n 还提供了一些常用的方法 ⬇️https://docs.n8n.io/code/builtin/convenience比如$ifEmpty()$ifEmpty(value, defaultValue)这个方法会判断value是否为空undefined、null、、空数组、空对象如果为空则返回defaultValue的值。
要在一堆数值里挑出最大值或者最小值可以使用$max()和$min()方法。
其他方法可以参考文档用法非常简单。
输出数据给下一个节点「代码节点」还有一个功能就是整理数据。
这个能力完全覆盖了「Edit Fields 节点」的能力。
在「代码节点」里通过return可以将数据传递给下一个节点而return的内容就是你整理好的数据。
比如从前2个节点获取到一大堆数据但我就是要骗下一个节点说没获取到任何用户信息就可以这么写。
当然我们通过节点名可以获取任意祖先节点的数据通过「代码节点」可以将所有祖先数据都重新组装一遍返回给下一个节点。
以上就是本文的全部内容啦想了解更多n8n玩法欢迎关注《n8n修炼手册》如果你有 NAS我非常建议你在 NAS 上部署一套 n8n搞搞副业也好帮你完成工作任务也好 《『NAS』不止娱乐NAS也是生产力在绿联部署AI工作流工具-n8n》点赞 关注 收藏 学会了