通过 Power Query 在 Excel 中的 Smartsheet 数据
Posted
技术标签:
【中文标题】通过 Power Query 在 Excel 中的 Smartsheet 数据【英文标题】:Smartsheet data in Excel via Power Query 【发布时间】:2014-12-22 13:02:19 【问题描述】:Smartsheet 的 API 输出将行和列作为独立的对象返回,它们相互独立。 这会导致列的单独记录(字段名称列表)和行的另一组记录(具有来自各个字段的单个字段值的记录)
有没有办法返回单个 JSON 列表(行和列会产生单个记录列表)?
这是我在查询编辑器中使用的代码,它返回单独的行和列
= Web.Contents(
"https://api.smartsheet.com/1.1/sheet/[SHEET_ID]",
[
Headers =
[
#"Authorization" = "Bearer YOUR_API_TOKEN"
]
]
)
【问题讨论】:
在相关说明中,我还要指出,弄清楚如何从 PQ 连接到经过身份验证的 REST API 服务并非易事。以下是我的工作方式:(1)在 PQ 编辑器中,我硬编码了身份验证头 + API 令牌:= Web.Contents(“api.smartsheet.com/1.1/sheet/4693183612381060”, [ Headers=[#“Authorization” = “Bearer YOUR_API_TOKEN”]] ) (2) 当提示输入凭据时,我选择了匿名而不是 Web API,正如这里的 cmets 中有人建议的那样 powerpivotblog.nl/… Ivan,您能否举例说明您希望输出的样子? 【参考方案1】:我使用他们网站上的示例数据提出了这组转换:
let
Source = Json.Document(File.Contents("D:\testdata\foo.json")),
ColumnIds = List.Transform(Source[columns], each Text.From([id])),
ColumnNames = List.Transform(Source[columns], each [title]),
Table = Table.FromList(Source[rows], Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Expanded = Table.ExpandRecordColumn(Table, "Column1", "rowNumber", "cells", "rowNumber", "cells"),
Mapped = Table.TransformColumns(Expanded, "cells",
each Record.Combine(List.Transform(_, each Record.AddField([], Text.From([columnId]), [value])))),
Result = Table.ExpandRecordColumn(Mapped, "cells", ColumnIds, ColumnNames)
in
Result
【讨论】:
以上是关于通过 Power Query 在 Excel 中的 Smartsheet 数据的主要内容,如果未能解决你的问题,请参考以下文章
在通过 Python 运行时维护 Excel 工作簿的 Power Query 连接
Excel Power Query:工序产出数据的整合与提取