json 通过Power Query在Excel中创建Smartsheet数据

7ajki6be  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(77)

Smartsheet的API输出将行和列作为相互独立的单独对象返回。这将导致列的单独记录(字段名称列表)和行的另一组记录(具有来自各个字段的值的单个字段的记录)
有没有一种方法可以返回一个JSON列表(行和列导致一个记录列表)?
这是我在查询编辑器中使用的返回单独的列和列的代码

= Web.Contents(
    "https://api.smartsheet.com/1.1/sheet/[SHEET_ID]",
    [
        Headers = 
        [
            #"Authorization" = "Bearer YOUR_API_TOKEN"
        ]
    ]
)

字符串

xkftehaa

xkftehaa1#

我使用他们网站上的样本数据来实现这组转换:

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

字符串

ojsjcaue

ojsjcaue2#

柯特·哈根洛彻的回答正是我所期待的
我做了一些更改,以获得rowID,并解决一些问题,如果工作表或某些列是空的

let
    Source = Json.Document(File.Contents("C:\0\0\0\0\test.json")),
    ColumnIds = List.Transform(Source[columns], each Text.From([id])),
    ColumnNames = List.Transform(Source[columns], each [title]),
    Table = Table.FromList(Source[rows], Splitter.SplitByNothing(), 1, {"id", "rowNumber", "cells"}, ExtraValues.Error),
    Expanded = Table.ExpandRecordColumn(Table, "Column1", {"id", "rowNumber", "cells"}, {"id", "rowNumber", "cells"}),
    Mapped = Table.TransformColumns(Expanded, {"cells",
        each Record.Combine(List.Transform(_, each Record.AddField([], Text.From([columnId]), try [value] otherwise null)))}),
    Result = Table.ExpandRecordColumn(Mapped, "cells", ColumnIds, ColumnNames),
    #"Changed Type" = Table.TransformColumnTypes(Result,{{"id", type text}})
in
    #"Changed Type"

字符串

相关问题