Power Query:如何通过SharePoint库显示名称而非内部名称访问内容
核心思路
通过SharePoint.Tables()获取包含显示名称和内部路径的库列表,筛选出目标显示名的库后,用其内部路径配合SharePoint.Contents()访问库内容。
步骤1:获取站点库列表(含显示名与路径)
先运行这段代码,查看站点内所有文档库的显示名和对应内部路径:
let // 替换为你的SharePoint站点完整URL SiteURL = "https://your-company.sharepoint.com/sites/YourSite", // 获取站点所有列表/库,ApiVersion根据SharePoint版本调整(15对应2013/Online,16对应2016+) SiteTables = SharePoint.Tables(SiteURL, [ApiVersion = 15]), // 仅保留文档库(如果需要包含其他列表可删除此行) DocumentLibraries = Table.SelectRows(SiteTables, each [IsDocumentLibrary] = true) in DocumentLibraries
返回的表中,Title字段是库的显示名称,ServerRelativeUrl是库的内部访问路径。
步骤2:根据显示名称直接获取目标库内容
基于上面的逻辑,直接筛选目标显示名的库并加载内容:
let SiteURL = "https://your-company.sharepoint.com/sites/YourSite", // 替换为你要访问的库的显示名称 TargetLibraryName = "项目文档库", // 获取站点库列表 SiteTables = SharePoint.Tables(SiteURL, [ApiVersion = 15]), DocumentLibraries = Table.SelectRows(SiteTables, each [IsDocumentLibrary] = true), // 筛选出目标显示名的库 TargetLibrary = Table.SelectRows(DocumentLibraries, each [Title] = TargetLibraryName), // 提取库的内部路径 LibraryPath = TargetLibrary{0}[ServerRelativeUrl], // 加载库内容 LibraryContents = SharePoint.Contents(SiteURL)[LibraryPath] in LibraryContents
优化:封装为自定义函数(方便重复调用)
如果需要频繁访问不同库,把逻辑封装成函数:
GetSPLibraryByDisplayName = (SiteURL as text, LibraryDisplayName as text) as table => let SiteTables = SharePoint.Tables(SiteURL, [ApiVersion = 15]), DocumentLibraries = Table.SelectRows(SiteTables, each [IsDocumentLibrary] = true), TargetLibrary = Table.SelectRows(DocumentLibraries, each [Title] = LibraryDisplayName), LibraryPath = TargetLibrary{0}[ServerRelativeUrl], LibraryContents = SharePoint.Contents(SiteURL)[LibraryPath] in LibraryContents
调用示例:GetSPLibraryByDisplayName("https://your-site-url", "市场部资料库")
注意事项
- 如果存在多个显示名称相同的库,需添加额外筛选条件(比如结合
Id或Description字段)避免出错 - 确认SharePoint站点权限,确保Power Query能正常访问站点内容
- ApiVersion参数需匹配你的SharePoint环境,若15报错可尝试改为16
内容的提问来源于stack exchange,提问作者Olivier Goret
相关产品推荐
相关产品推荐

