n8n-nodes-feishu-bitable
n8n 飞书多维表格节点 - 读取、写入和管理飞书多维表格数据,支持简单的文本语法筛选。
功能特性
| 操作类型 |
功能说明 |
适用场景 |
| 读取记录 |
从飞书多维表格获取数据 |
数据同步、报表生成、数据分析 |
| 写入记录 |
向飞书多维表格写入文本数据 |
数据更新、批量导入、状态变更 |
| 上传附件 |
上传文件到附件字段 |
图片存储、文档归档、资源管理 |
安装说明
方式一:通过 n8n 社区节点安装(推荐)
| 步骤 |
操作位置 |
具体操作 |
| 1 |
n8n 主界面 |
点击左下角 Settings 图标 |
| 2 |
Settings 页面 |
选择左侧菜单 Community Nodes |
| 3 |
Community Nodes 页面 |
点击 Install a community node 按钮 |
| 4 |
安装对话框 |
输入 n8n-nodes-feishu-bitable |
| 5 |
安装对话框 |
点击 Install 按钮 |
| 6 |
等待安装完成 |
安装成功后节点会出现在节点列表中 |
方式二:手动安装(Docker 环境)
# 进入 n8n 自定义节点目录
cd ~/.n8n/custom
# 使用 npm 安装
npm install n8n-nodes-feishu-bitable
# 重启 n8n 服务
docker restart n8n
方式三:本地开发安装
# 克隆仓库
git clone https://github.com/your-repo/n8n-nodes-feishu-bitable.git
# 进入项目目录
cd n8n-nodes-feishu-bitable
# 安装依赖
npm install
# 构建项目
npm run build
# 链接到 n8n
npm link
# 在 n8n 自定义节点目录中链接
cd ~/.n8n/custom
npm link n8n-nodes-feishu-bitable
凭证配置
步骤 1:创建飞书应用
| 步骤 |
操作位置 |
具体操作 |
| 1 |
浏览器 |
访问 飞书开放平台 |
| 2 |
开放平台首页 |
点击右上角 登录 并完成登录 |
| 3 |
开发者后台 |
点击 创建企业自建应用 |
| 4 |
创建应用页面 |
填写应用名称(如:n8n 数据同步) |
| 5 |
创建应用页面 |
填写应用描述 |
| 6 |
创建应用页面 |
点击 创建 按钮 |
步骤 2:获取应用凭证
| 字段名 |
获取位置 |
说明 |
| App ID |
应用详情 → 凭证与基础信息 |
格式如 cli_xxxxxxxxxx |
| App Secret |
应用详情 → 凭证与基础信息 |
点击"显示"查看,格式为 32 位字符串 |
步骤 3:配置应用权限
在飞书开放平台的应用详情页,进入 权限管理 → API 权限,开启以下权限:
| 权限名称 |
权限标识 |
用途 |
| 查看、评论、编辑和管理多维表格 |
bitable:app |
读取和写入表格数据 |
| 上传、下载文件 |
drive:drive |
上传附件文件 |
步骤 4:在 n8n 中配置凭证
| 步骤 |
操作位置 |
具体操作 |
| 1 |
n8n 主界面 |
点击左侧 Credentials |
| 2 |
Credentials 页面 |
点击 Add Credential |
| 3 |
选择凭证类型 |
搜索并选择 Feishu Bitable API |
| 4 |
凭证配置页面 |
填写 App ID |
| 5 |
凭证配置页面 |
填写 App Secret |
| 6 |
凭证配置页面 |
点击 Save 保存 |
节点配置说明
通用字段
| 字段名 |
类型 |
必填 |
说明 |
| 凭证 |
下拉选择 |
✅ |
选择已配置的 Feishu Bitable API 凭证 |
| 操作类型 |
下拉选择 |
✅ |
选择:读取记录 / 写入记录 / 上传附件 |
| 表格链接 |
文本 |
✅ |
粘贴飞书多维表格的完整链接 |
表格链接格式
支持以下链接格式:
# 标准格式
https://xxx.feishu.cn/base/{app_token}?table={table_id}
# 带视图参数(视图参数会被忽略)
https://xxx.feishu.cn/base/{app_token}?table={table_id}&view={view_id}
# 示例
https://example.feishu.cn/base/bascnXXXXXXXXXX?table=tblXXXXXXXXXX
读取记录操作
| 字段名 |
类型 |
必填 |
说明 |
| 输出列 |
多行文本 |
❌ |
每行一个列名,留空返回所有列 |
| 筛选条件 |
多行文本 |
❌ |
每行一条筛选规则,语法见下文 |
| 最大行数 |
数字 |
❌ |
限制返回的最大记录数,默认无限制 |
写入记录操作
| 字段名 |
类型 |
必填 |
说明 |
| 目标列 |
文本 |
✅ |
要写入数据的列名 |
| 写入内容 |
文本 |
✅ |
要写入的内容,支持表达式 |
| 筛选条件 |
多行文本 |
❌ |
筛选要更新的记录 |
| 新增行 |
开关 |
❌ |
开启后创建新记录而非更新 |
| 新增行数 |
数字 |
❌ |
新增行模式下要创建的行数(1-100) |
上传附件操作
| 字段名 |
类型 |
必填 |
说明 |
| 目标列 |
文本 |
✅ |
附件字段的列名 |
| 二进制属性 |
文本 |
✅ |
包含文件数据的二进制属性名 |
| 筛选条件 |
多行文本 |
❌ |
筛选要添加附件的记录 |
| 新增行 |
开关 |
❌ |
开启后创建新记录并添加附件 |
筛选条件语法
本节点支持简单的文本语法来筛选表格记录,无需编写复杂的 JSON 配置。
基本语法
| 语法格式 |
功能说明 |
示例 |
列名+关键词 |
仅包含该列包含关键词的行 |
状态+进行中 |
列名-关键词 |
排除该列包含关键词的行 |
状态-已完成 |
列名+空值 |
仅包含该列为空的行 |
备注+空值 |
列名-空值 |
排除该列为空的行 |
备注-空值 |
列名+非空值 |
仅包含该列非空的行 |
备注+非空值 |
列名-非空值 |
排除该列非空的行 |
备注-非空值 |
多条件组合规则
| 条件类型 |
组合逻辑 |
说明 |
| 包含条件(+) |
AND |
记录必须同时满足所有包含条件 |
| 排除条件(-) |
OR |
记录只要满足任一排除条件就会被排除 |
匹配规则
| 规则 |
说明 |
| 大小写不敏感 |
状态+进行中 会匹配 "进行中"、"JINXINGZHONG" 等 |
| 包含匹配 |
标题+报告 会匹配 "月度报告"、"报告总结" 等 |
| 列表字段 |
对于多选字段,任一选项匹配即可 |
筛选示例
# 示例 1:筛选状态为"进行中"且优先级为"高"的记录
状态+进行中
优先级+高
# 示例 2:筛选有负责人的记录
负责人+非空值
# 示例 3:排除已完成和已取消的记录
状态-已完成
状态-已取消
# 示例 4:筛选标题包含"报告"且备注不为空的记录
标题+报告
备注-空值
使用示例
示例 1:读取表格数据
场景:从飞书多维表格读取所有"进行中"的任务
节点配置:
| 字段 |
值 |
| 操作类型 |
读取记录 |
| 表格链接 |
https://example.feishu.cn/base/bascnXXX?table=tblXXX |
| 输出列 |
标题
状态
负责人
截止日期 |
| 筛选条件 |
状态+进行中 |
示例 2:更新记录状态
场景:将所有"待处理"的任务状态更新为"进行中"
节点配置:
| 字段 |
值 |
| 操作类型 |
写入记录 |
| 表格链接 |
https://example.feishu.cn/base/bascnXXX?table=tblXXX |
| 目标列 |
状态 |
| 写入内容 |
进行中 |
| 筛选条件 |
状态+待处理 |
示例 3:批量新增记录
场景:批量创建 5 条新任务记录
节点配置:
| 字段 |
值 |
| 操作类型 |
写入记录 |
| 表格链接 |
https://example.feishu.cn/base/bascnXXX?table=tblXXX |
| 目标列 |
标题 |
| 写入内容 |
{{ $json.taskName }} |
| 新增行 |
✅ 开启 |
| 新增行数 |
5 |
示例 4:上传图片附件
场景:将工作流中的图片上传到表格的附件字段
节点配置:
| 字段 |
值 |
| 操作类型 |
上传附件 |
| 表格链接 |
https://example.feishu.cn/base/bascnXXX?table=tblXXX |
| 目标列 |
附件 |
| 二进制属性 |
data |
| 筛选条件 |
任务ID+{{ $json.taskId }} |
输出格式
读取操作输出
{
"records": [
{
"record_id": "recXXXXXXXX",
"标题": "任务标题",
"状态": "进行中",
"负责人": [
{
"id": "ou_xxxxx",
"name": "张三"
}
],
"截止日期": 1703980800000,
"备注": null
}
],
"status": "success",
"affectedCount": 1,
"message": "成功读取 1 条记录"
}
写入操作输出
{
"status": "success",
"affectedCount": 5,
"message": "成功更新 5 条记录"
}
附件上传输出
{
"status": "success",
"affectedCount": 1,
"message": "成功上传附件到 1 条记录",
"fileToken": "boxcnXXXXXXXX"
}
测试验证
验证凭证配置
在 n8n 凭证配置页面点击 Test 按钮,预期结果:
| 结果 |
说明 |
| ✅ Connection tested successfully |
凭证配置正确 |
| ❌ Invalid credentials |
App ID 或 App Secret 错误 |
验证节点功能
- 创建一个简单的工作流
- 添加 Manual Trigger 节点
- 添加 Feishu Bitable 节点
- 配置读取操作,不设置筛选条件
- 执行工作流,检查是否能获取到表格数据
验证检查项
| 检查项 |
预期结果 |
| 节点出现在节点列表 |
搜索"飞书"或"Feishu"可找到 |
| 凭证测试通过 |
显示连接成功 |
| 读取操作正常 |
返回表格记录数据 |
| 筛选条件生效 |
返回符合条件的记录 |
| 写入操作正常 |
表格数据被更新 |
问题排查
| 问题现象 |
检查项 |
解决方法 |
| 凭证测试失败 |
App ID 和 App Secret 是否正确 |
重新从飞书开放平台复制凭证 |
| 无法访问表格 |
应用是否有表格权限 |
在飞书开放平台开启 bitable:app 权限 |
| 无法访问表格 |
表格是否授权给应用 |
在表格设置中添加应用为协作者 |
| 链接解析失败 |
链接格式是否正确 |
确保链接包含 base/ 和 table= |
| 筛选无结果 |
列名是否正确 |
检查列名是否与表格中完全一致 |
| 筛选无结果 |
关键词是否存在 |
检查表格中是否有匹配的数据 |
| 写入失败 |
目标列是否存在 |
检查列名是否正确 |
| 写入失败 |
字段类型是否匹配 |
确保写入内容与字段类型兼容 |
| 附件上传失败 |
是否有云盘权限 |
开启 drive:drive 权限 |
| 附件上传失败 |
目标列是否为附件类型 |
确保目标列是附件字段 |
| 请求超时 |
网络是否正常 |
检查网络连接,稍后重试 |
| 请求过于频繁 |
是否触发限流 |
等待一段时间后重试 |
配置清单
飞书开放平台配置
| 配置项 |
位置 |
值 |
| 应用类型 |
创建应用时选择 |
企业自建应用 |
| API 权限 - 多维表格 |
权限管理 → API 权限 |
bitable:app |
| API 权限 - 云盘 |
权限管理 → API 权限 |
drive:drive |
n8n 凭证配置
| 字段 |
来源 |
格式 |
| App ID |
飞书开放平台 → 应用详情 → 凭证与基础信息 |
cli_xxxxxxxxxx |
| App Secret |
飞书开放平台 → 应用详情 → 凭证与基础信息 |
32 位字符串 |
表格授权配置
| 配置项 |
位置 |
操作 |
| 添加应用为协作者 |
表格右上角 → 分享 → 添加协作者 |
搜索并添加应用 |
| 设置权限级别 |
添加协作者时选择 |
选择"可编辑"或"可管理" |
开发指南
环境要求
| 依赖 |
版本要求 |
| Node.js |
>= 18.10 |
| npm |
>= 9.0 |
开发命令
# 安装依赖
npm install
# 开发模式(监听文件变化)
npm run dev
# 构建项目
npm run build
# 运行测试
npm test
# 运行测试(监听模式)
npm run test:watch
# 代码检查
npm run lint
# 代码格式化
npm run format
项目结构
n8n-nodes-feishu-bitable/
├── credentials/
│ └── FeishuBitableApi.credentials.ts # 凭证定义
├── nodes/
│ └── FeishuBitable/
│ ├── FeishuBitable.node.ts # 节点主体
│ ├── FeishuApiClient.ts # API 客户端
│ ├── FilterParser.ts # 筛选条件解析器
│ ├── UrlParser.ts # 链接解析器
│ └── feishu.svg # 节点图标
├── dist/ # 构建输出
├── package.json
├── tsconfig.json
└── README.md
许可证
MIT License
相关链接