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

调整Hoosier的M查询获取SharePoint列表数据时遇认证错误求助

解决Power BI通过M查询获取SharePoint个人站点列表时的认证失败问题

你的核心问题是错误拼接了SharePoint个人站点的API地址,原教程代码针对的是团队站点(带/sites/路径),但你的列表属于个人My Site,路径结构完全不同,导致生成的API地址无效,进而触发认证错误。

错误点拆解

  • sitename字段你填了完整的列表页面URL,这完全不符合原代码的设计(原代码sitename是团队站点的子路径)
  • baseurl拼接后出现了重复的站点URL和列表路径,生成的地址是无效的,Power BI无法正确识别数据源,导致认证失败

修正后的完整M代码

let
    // 个人站点的根地址,不是列表页面地址
    siteRoot = "https://thebravanesesocietycouk-my.sharepoint.com/personal/jeilani_thebravanesesociety_co_uk",
    listName = "Customers",
    // 正确的API基础地址
    baseUrl = siteRoot & "/_api/web/lists/GetByTitle('" & listName & "')/",
    // 获取列表总条目数
    itemCount = Json.Document(Web.Contents(baseUrl & "ItemCount", [Headers=[Accept="application/json"]]))[value],
    // 生成分页跳过的序列(每页5000条)
    skipList = List.Numbers(0, Number.RoundUp(itemCount/5000), 5000),
    // 转换为表格处理分页
    #"Converted to Table" = Table.FromList(skipList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Skip"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Skip", type text}}),
    // 分页参数,可按需修改字段选择
    fieldSelect = "&$top=5000",
    // 逐页获取数据
    #"Added Items Column" = Table.AddColumn(#"Changed Type", "Items", each Json.Document(Web.Contents(baseUrl & "items?$skipToken=Paged=TRUE%26p_ID=" & [Skip] & fieldSelect, [Headers=[Accept="application/json"]]))),
    // 展开数据记录
    #"Expanded Items" = Table.ExpandRecordColumn(#"Added Items Column", "Items", {"value"}, {"value"}),
    #"Expanded Value" = Table.ExpandListColumn(#"Expanded Items", "value")
in
    #"Expanded Value"

后续排查步骤

  1. 确认凭据类型:
    • 在Power BI中点击「主页」→「数据源设置」,找到对应的SharePoint数据源
    • 将凭据类型改为OAuth2,点击「登录」,使用拥有该列表访问权限的微软账号登录
  2. 验证API地址有效性:
    • 在浏览器中打开 https://thebravanesesocietycouk-my.sharepoint.com/personal/jeilani_thebravanesesociety_co_uk/_api/web/lists/GetByTitle('Customers')/ItemCount
    • 确认能返回类似{"value":123}的JSON数据,说明地址和权限都正常
  3. 自定义字段选择(可选):
    • 如果只需要特定字段,可修改fieldSelect参数,比如:
      fieldSelect = "&$top=5000&$select=Id,Title,Email,Phone"
      
    • 若需展开 lookup 或人员字段,参考原代码的注释添加$expand参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:20:19