Excel Power Query调用带分页REST API获取全量数据问题求助
问题分析与修正方案
你的代码返回空列表主要有两个核心问题:终止条件逻辑错误,导致最后一页(甚至第一页)数据被丢弃;页码累加逻辑错误,无法正确请求后续页面。结合你需要的循环逻辑,修正后的Power Query代码如下:
let GetNextResult=(start as number) => let // 加入错误处理,请求失败时返回null终止循环 Source = try Json.Document(Web.Contents("https://my.jira.server/rest/agile/latest/board/8479/sprint",[Query=[startAt=Number.ToText(start)]])) otherwise null in Source, GetAllResults=()=> let AllResults = List.Generate( // 初始状态:请求第一页,起始位置0 () => [CurrentResult = GetNextResult(0), NextStartAt = 0], // 循环条件:当前结果不为空则继续 each [CurrentResult] <> null, // 状态转换:计算下一页起始位置,若当前是最后一页则返回null终止 each [ NextStartAt = [NextStartAt] + [CurrentResult][maxResults], CurrentResult = if [CurrentResult][isLast] then null else GetNextResult([NextStartAt]) ], // 提取当前页的values数据 each [CurrentResult][values] ), // 将所有页的子列表合并为一个全量列表 CombinedResults = List.Combine(AllResults) in CombinedResults in GetAllResults
关键修正点说明
- 修复终止逻辑:原代码的终止条件会跳过
isLast=true的页面,修正后先将当前页数据加入列表,再判断是否需要请求下一页,确保所有页面数据都被收集。 - 正确累加页码:将页码更新改为累加式
NextStartAt = [NextStartAt] + [CurrentResult][maxResults],保证每次请求的起始位置是上一页的结束位置。 - 添加错误处理:用
try...otherwise null模拟C代码中的异常捕获,请求失败时自动终止循环。 - 合并结果集:通过
List.Combine将每页的values子列表合并为一个完整的全量数据列表,无需手动拼接。
使用时直接调用GetAllResults()即可获取所有页面的完整数据。
内容的提问来源于stack exchange,提问作者PaulH
相关产品推荐
相关产品推荐

