目录

n8n Google Sheets 教程:自动读取、新增和更新数据

Google Sheets 是最常见的“轻量级数据库”:报名名单、订单、库存、客户清单。n8n 可以自动读取、写入和更新表格,并在有新数据时触发工作流。

准备:授权

  • n8n Cloud:创建 Google Sheets 凭据时直接登录 Google 即可。
  • 自托管:需要先在 Google Cloud 中创建 OAuth 客户端并启用 Google Sheets API,完整步骤请参阅凭据管理。

表格格式

n8n 将第一行作为列名,之后每一行是一条数据(一个 item):

姓名Email场次状态
王小明ming@example.com10/20 北京已确认
李小华hua@example.com10/27 上海待确认

读取后,每一行会变成:

{ "row_number": 2, "姓名": "王小明", "Email": "ming@example.com", "场次": "10/20 北京", "状态": "已确认" }

建议列名简短且不重复,并避免使用合并单元格。

常用操作

在 Google Sheets 节点中选择:

操作说明
Get Row(s)读取数据行,可以设置筛选条件(例如状态 = 待确认)
Append Row在最后新增一行
Update Row根据某个列找到对应的行并更新
Append or Update Row找到就更新,找不到就新增(最常用)
Delete Rows删除行
Clear清空工作表
Create创建新的表格或工作表

选择表格和工作表时,可以从列表中选择,也可以粘贴表格网址。

列映射

新增或更新时,Mapping Column Mode 有两种方式:

  • Map Each Column Manually:为每一列分别填写表达式,例如“姓名”填入 {{ $json.name }}
  • Map Automatically:输入数据的列名与表格列名相同时自动映射

更新:选择用于匹配的列

Update / Append or Update 需要指定 Column to match on,例如使用“Email”列进行匹配。请选择不会重复的列。

监听新数据:Google Sheets Trigger

Google Sheets Trigger 会定期检查表格,在有新增行或行被修改时触发。适合“有人在表格中新增一笔订单,就自动处理”这类场景。

请注意,它通过轮询运行(例如每分钟检查一次),不是实时触发。

完整示例:活动报名自动化

需求:用户填写报名表 → 写入表格 → 发送确认邮件 → 通知管理员。

[Form Trigger] ─▶ [Google Sheets:Append or Update] ─▶ [Send Email:确认邮件] ─▶ [Telegram:通知管理员]

1. Form Trigger

使用 n8n 内置表单,无需 Google 表单:

  • Form Title:讲座报名
  • 字段:
    • 姓名(Text,必填)
    • Email(Email,必填)
    • 场次(Dropdown:10/20 北京、10/27 上海)

发布后会生成一个表单网址,可以直接分享。

2. 写入表格

在 Google Sheets 节点中选择操作 Append or Update Row:

  • Column to match on:Email
  • 姓名:{{ $json['姓名'] }}
  • Email:{{ $json.Email }}
  • 场次:{{ $json['场次'] }}
  • 状态:已报名
  • 报名时间:{{ $now.toFormat('yyyy-MM-dd HH:mm') }}

使用 Email 匹配,同一个人重复报名时只会更新数据,不会新增重复行。

3. 发送确认邮件

使用 Send Email 或 Gmail 节点:

{{ $('Form Trigger').item.json['姓名'] }} 您好:

感谢报名“{{ $('Form Trigger').item.json['场次'] }}”场次讲座,
我们已收到您的报名,活动前一天会再次发送提醒。

因为上一个节点是 Google Sheets,所以使用 $('Form Trigger') 读取表单中的原始数据。

4. 通知管理员

接入 Telegram 或 Slack 节点,发送“新报名:姓名 / 场次”。

进阶:每天发送报名统计

[Schedule 每天 18:00] ─▶ [Google Sheets:Get Rows] ─▶ [Summarize:按场次计数] ─▶ [Send Email]

Summarize 节点设置:Fields to Split By 选择“场次”,Aggregation 选择 Count,即可得到每个场次的报名人数。

常见问题

数据量很大时速度慢或出错

Google Sheets API 有速率限制。大量写入时:

  • 尽量一次写入多行,而不是每行调用一次
  • 使用 Loop Over Items 分批处理,中间添加 Wait

数据超过数万条时,建议改用真正的数据库(PostgreSQL、MySQL),或 n8n 内置的 Data Tables(具体取决于版本)。

读取的数字变成字符串

表格单元格格式会影响读取结果。比较或计算前,使用 Number() 转换。

找不到列

确认第一行是列名,且名称前后没有多余空格。修改列名后,需要在节点中重新加载列。

更新于 2026年10月12日