Excel Power Query获取SharePoint文档库时如何显示托管元数据
我太懂这种烦恼了——用Power Query拉SharePoint文档库的数据,结果那些托管元数据列全显示成[Record],点进去看全是陌生的字段和ID,完全不是SharePoint界面里那串友好的文本对吧?别慌,这个问题在Power Query里特别常见,我来给你拆解两种解决办法,不管你习惯用界面操作还是写M代码都能搞定。
先搞懂为什么会显示成[Record]
SharePoint的托管元数据本质是个复杂对象,里面存了术语的ID、语言版本、显示文本等一堆信息,Power Query拉取的时候会把整个对象当成「Record」类型,所以直接显示成[Record]——我们要做的就是从这个Record里把显示文本提取出来。
方法一:用Power Query界面可视化操作(零代码)
- 打开Power Query编辑器,找到那个显示[Record]的列,点一下列标题右边的双向箭头按钮(就是用来扩展嵌套数据的那个小图标)
- 在弹出的选项框里,别全选!只找包含显示文本的字段——通常是
Label(通用显示标签),或者带语言代码的比如Term1033(对应英文)、Term2052(对应中文),勾选这个字段后点确定 - 这时候列就会自动转换成SharePoint里显示的文本啦,要是扩展后列名变了,右键重命名回原来的列名就好
方法二:直接修改M代码(适合高效处理多列)
如果你习惯写代码,或者要批量处理多个托管元数据列,用Table.TransformColumns函数就很方便:
假设你的托管元数据列名叫部门分类,就在现有查询的合适位置插入这行代码:
= Table.TransformColumns(上一步的表名称, {{"部门分类", each [Label], type text}})
- 简单说下逻辑:
each [Label]就是告诉Power Query,把这个列里的每个Record,都提取它的Label字段值;type text是指定结果为文本类型 - 要是你发现显示文本存在其他字段(比如
Term2052),把[Label]换成对应的字段名就行
额外情况:处理允许多选的托管元数据
要是你的SharePoint列设置了允许多选,那Power Query里显示的会是[List]而不是[Record],这时候可以用下面的代码把多个值合并成逗号分隔的文本:
= Table.TransformColumns(上一步的表名称, {{"多选项分类", each Text.Combine(List.Transform(_, (x) => x[Label]), ", "), type text}})
- 逻辑是:先遍历List里的每个Record,提取
Label文本,再用逗号把所有值连起来,变成一串友好的字符串
备注:内容来源于stack exchange,提问作者Steven Suranie
相关产品推荐
相关产品推荐

