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

多SharePoint站点集多库数据提取及类型转换错误求助

问题分析与解决方案

错误原因

你遇到的“无法将值‘Library1’转换为List类型”错误,核心是类型不匹配:

  • 脚本中用List.Combine合并结果,但SharePoint.Tables返回的文档库Items是表类型,而非List.Combine要求的列表类型。
  • 最后一步tabelasDeBibliotecas{0}仅提取了合并后的第一个元素,没有完成所有文档库数据的合并逻辑。

修正后的Power Query脚本

let
    sitesEBibliotecas = {
        {"https://Site1", {"Library1", "Library2"}},
        {"https://Site2", {"Library1", "Library2"}}
    },
    // 遍历每个站点,处理该站点下的所有文档库
    processarSites = List.Transform(sitesEBibliotecas, (site) =>
        let
            siteUrl = site{0},
            bibliotecas = site{1},
            // 遍历当前站点下的每个文档库,获取其Items表
            processarBibliotecas = List.Transform(bibliotecas, (biblioteca) =>
                let
                    origem = SharePoint.Tables(siteUrl & "/" & biblioteca, [ApiVersion = 15]),
                    itemsTabela = origem{[Id=biblioteca]}[Items]
                in
                    itemsTabela
            ),
            // 合并当前站点下所有文档库的表
            combinarTabelasSite = Table.Combine(processarBibliotecas)
        in
            combinarTabelasSite
    ),
    // 合并所有站点的表
    combinarTodosSites = Table.Combine(processarSites)
in
    combinarTodosSites

关键改动说明

  1. 替换合并函数:把嵌套的List.Combine改为Table.Combine——因为我们要合并的是SharePoint返回的表对象,而非列表元素。
  2. 拆分逻辑层级:先处理单个站点下的文档库合并,再合并所有站点的结果,结构更清晰,避免类型混淆。
  3. 完整合并数据:移除了仅提取第一个元素的错误步骤,确保所有站点、所有文档库的数据都被合并。

额外检查点

  • 确认SharePoint.Tables返回的结果中,Id字段确实对应文档库名称(如Library1)。如果你的站点返回的名称存在于Name字段,需将origem{[Id=biblioteca]}[Items]改为origem{[Name=biblioteca]}[Items]。
  • 确保所有同名文档库的字段结构、数据类型完全一致,否则Table.Combine会自动为缺失字段填充null,若存在类型冲突需提前做字段类型转换。

内容的提问来源于stack exchange,提问作者user3704742

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:55