Notion/Airtable/Google Sheets 数据集成
Ch11 Notion / Airtable / Google Sheets 数据集成
Notion 是知识管理与项目协作的主力工具,Airtable 是低代码数据库的标杆,Google Sheets 是最通用的在线表格。这三个平台都提供了 n8n 专用节点,能实现页面创建、记录增删改查、视图筛选、批量写入等操作。本章逐一讲解每个节点的核心功能,并用两个完整项目——CRM 线索自动录入和表单提交数据同步——串联所有知识点。
Notion 节点:知识库与数据库操作
凭证配置
Notion 节点使用 Notion Internal Integration Token 进行认证:
- 访问
notion.so/my-integrations,创建新的 Internal Integration - 为 Integration 分配所需权限:Read content、Insert content、Update content
- 进入目标 Notion 数据库页面,点击右上角"⋯"→"Connect to"→ 选择你的 Integration
- 复制 Integration Token,在 n8n Credentials 中新建"Notion API"凭证并粘贴
创建数据库页面(Create)
Operation 选"Create",资源选"Database Page",然后选择目标数据库 ID。属性映射部分是关键:Notion 数据库的每个列(属性)对应一个字段类型:
- Title:填写字符串,对应数据库的标题列
- Rich Text:填写字符串,对应多行文本属性
- Select / Multi-select:填写选项名称字符串(必须与 Notion 中已有选项匹配,否则自动创建)
- Date:填写 ISO 8601 格式日期字符串,如
2025-04-25 - Number:填写数字
- Checkbox:填写
true或false - URL / Email / Phone:填写对应格式的字符串
数据库查询(Get Many)
Operation 选"Get Many",可配置 Filter(过滤条件)和 Sort(排序)。Filter 支持 and/or 逻辑组合,每个条件由"属性名 + 过滤运算符 + 值"组成。例如:筛选"Status = In Progress AND Priority = High"的任务,直接在图形界面点击"Add Filter"逐条填写即可。
属性更新(Update)
根据页面 ID 更新指定属性的值。通常与 Get Many 配合:先查询出需要更新的页面列表,再在 Loop Over Items 中逐一 Update。
Notion 数据库 ID 的获取方式: 在浏览器中打开数据库页面,URL 格式为
notion.so/<workspace>/<数据库ID>?v=...,其中 32 位十六进制字符串即为数据库 ID。也可以在 n8n 节点的 Database 字段点击"Search"按钮自动搜索已共享给 Integration 的数据库。
Airtable 节点:灵活的低代码数据库
凭证与基本设置
Airtable 使用 Personal Access Token(PAT)认证,在 airtable.com/create/tokens 创建,授予对应 Base 的读写权限。节点配置中需填写 Base ID(从 Base URL 中获取,形如 appXXXXXXXX)和 Table Name(表格名称)。
记录 CRUD 操作
- List Records:列出记录,支持按视图名过滤(View 参数)、按公式过滤(Filter by Formula)、排序和分页
- Create Record:传入字段名和值的对象创建新记录,返回带 Airtable 生成 ID 的完整记录
- Update Record:通过记录 ID 更新字段值,支持"只更新指定字段(PATCH)"和"替换整条记录(PUT)"两种模式
- Delete Record:通过记录 ID 删除记录
视图筛选与公式过滤
List Records 的"Filter by Formula"字段支持 Airtable 公式语言:
// 筛选本月创建且状态为"跟进中"的线索
AND(
IS_SAME({创建日期}, TODAY(), 'month'),
{状态} = "跟进中"
)
// 筛选金额大于 10000 且负责人为当前用户
AND(
{合同金额} > 10000,
{负责人} = "{{ $json.ownerName }}"
)
Google Sheets 节点:最通用的在线表格
凭证配置(OAuth2)
Google Sheets 节点使用 Google OAuth2 认证。在 n8n 的 Credentials 中新建"Google Sheets OAuth2 API",按提示在 Google Cloud Console 创建 OAuth 应用,下载 client_id 和 client_secret 填入,完成 OAuth 授权流程。
核心操作
- Read Rows:读取指定范围的单元格,如
Sheet1!A2:F100,第一行作为字段名自动映射 - Append Row:在表格末尾追加一行,传入字段名与值的对象
- Update Row:通过行号或唯一键更新指定行的值
- Clear Row:清空指定行
- Lookup:在指定列中查找匹配值,返回整行数据——类似 Excel 的 VLOOKUP
// Append Row 节点参数示例
{
"operation": "appendOrUpdate",
"documentId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms",
"sheetName": "线索记录",
"columns": {
"mappingMode": "defineBelow",
"value": {
"姓名": "={{ $json.name }}",
"公司": "={{ $json.company }}",
"需求金额": "={{ $json.budget }}",
"来源渠道": "={{ $json.source }}",
"录入时间": "={{ $now.toISO() }}"
}
}
}
双向数据同步架构设计
在多个数据平台之间保持数据一致是企业数字化的常见需求。关键设计要点:
- 以唯一 ID 为锚点:所有平台都存储同一条记录的唯一标识符(如 CRM ID),避免根据名称匹配导致的重复和歧义
- 防止循环触发:A 平台更新触发工作流写入 B 平台,B 平台的变更不能再反向触发同一个工作流。可用"标记字段"(如
sync_source: n8n)在写入时标记来源,触发器检测到该标记则跳过处理 - 幂等写入:使用 Upsert(Insert or Update)语义——若记录已存在则更新,不存在则创建
- 冲突解决策略:通常以"最后更新时间戳"为准(Last Write Wins),在 Code 节点比较两侧的
updatedAt,取较新的覆盖较旧的
实战:CRM 线索自动录入 Notion
场景:销售在表单填写客户信息 → 表单提交 → 自动录入 Notion CRM 数据库 → 分配给对应销售人员并飞书通知。
- Webhook 触发器:接收表单平台的 POST 推送(金数据、问卷星、Typeform 均支持 Webhook)
- Code 节点:清洗数据(去除首尾空格、标准化手机号格式、映射渠道来源名称)
- Notion 节点(Create Database Page):在"线索管理"数据库创建新页面,填写姓名、公司、联系方式、需求等属性
- Notion 节点(Get Database Page):查询负责人分配规则(从 Notion 的"销售人员"数据库中轮询取下一个空闲人员)
- Notion 节点(Update Page):把负责人属性更新到刚创建的线索页面
- HTTP Request 节点:通过飞书 Webhook 向负责人发送新线索通知,包含客户姓名、需求摘要和 Notion 页面链接
实战:表单提交 → Google Sheets → 飞书通知
这是一个适合非技术团队的轻量数据收集方案:
- Webhook 触发器:接收 Google Forms 或 Tally 的表单提交
- Google Sheets 节点(Append Row):将表单数据追加到汇总表格
- Google Sheets 节点(Read Rows):读取表格统计汇总行,获取当日总提交数
- HTTP Request 节点:推送飞书群消息,告知运营团队有新提交,并附上今日统计数据
为什么不用 Zapier / Make 做同样的事: n8n 自托管版本没有任务次数限制,数据全部在你的服务器处理,不经过第三方,对敏感的客户信息更友好。当数据量大(每月数万条)时,n8n 的成本优势极为显著。