You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:18:31