如何在n8n中从分页URL提取全量数据至Google Sheet
在n8n中实现分页URL的全量数据提取与Google Sheet同步
要解决仅能获取100条数据的问题,核心是让n8n自动遍历所有分页并合并数据,具体分两种常见分页场景处理:
场景1:API支持页码/偏移量分页(如page=1&limit=100)
- 获取分页元数据
- 用
HTTP Request节点调用一次API,传入初始分页参数(比如page=1&limit=100)。 - 从返回结果中提取总数据量(如
total字段)或总页数(如totalPages字段)。比如总数据500条、每页100条,就需要遍历5页。
- 用
- 生成分页参数列表
- 用
Function节点生成所有需要的页码数组,示例代码:return Array.from({length: 5}, (_, i) => ({page: i + 1})); - 或者用
Split In Batches节点,设置Batch Size为1,根据总页数生成循环次数。
- 用
- 循环调用API
- 将
HTTP Request节点放入循环分支(如Split In Batches的Batch输出),每次动态替换page参数为当前循环的页码。如果用偏移量(offset),则计算offset = (当前页码-1)*100。
- 将
- 合并全量数据
- 用
Merge节点选择Append模式,将每一页返回的数据集合并为一个完整数组。
- 用
- 同步到Google Sheet
- 用
Google Sheets节点选择Append或Overwrite模式,把合并后的数据写入目标表格。
- 用
场景2:API使用游标分页(返回nextToken或类似标记)
- 初始请求获取第一页数据
- 用
HTTP Request节点调用API,不带游标参数,获取第一页数据和返回结果中的nextToken。
- 用
- 循环遍历直到无游标
- 添加
While Loop节点,设置循环条件为$json.nextToken !== undefined(根据实际返回字段调整)。 - 循环内部的
HTTP Request节点,每次带上上一次返回的nextToken参数,请求下一页数据。 - 每次获取数据后,用
Merge节点累积数据。
- 添加
- 合并并同步数据
- 循环结束后,合并所有页的数据,再通过
Google Sheets节点写入表格。
- 循环结束后,合并所有页的数据,再通过
关键注意事项
- 速率限制处理:如果API有请求频率限制,在循环中加入
Wait节点,设置1-2秒延迟,避免被封禁。 - 字段一致性检查:确保每一页返回的数据字段结构完全一致,否则合并或写入Sheet时会出现字段缺失或错位。
- 错误捕获:在
HTTP Request节点后添加Error Catch节点,处理请求失败的情况,防止流程中断。 - 小批量测试:先测试2-3页数据,确认流程正常后再执行全量提取。
内容的提问来源于stack exchange,提问作者Aneeza Tariq
相关产品推荐
相关产品推荐

