之前讨论过power query获取腾讯文档数据,参考pbi社区,由于经常遇到问题(比如更改了格式或者加了公式)无法刷新,现更新下解决方案

1.0数据抓取

例如https://docs.qq.com/sheet/DYkNJRlp0cWRWZUlH?tab=ez6e97
id=DYkNJRlp0cWRWZUlH,tab=ez6e97

let
    源 = (id as text,tab) => let
      
       web=Json.Document(Web.Contents("https://docs.qq.com/dop-api/opendoc?tab="&Text.From(if tab=null then "BB08J2" else tab)&"&id="&Text.From(id)&"&outformat=1&normal=1"))[clientVars][collab_client_vars],
       doc=Table.FromRows(List.Split(List.Transform({0..web[maxCol]*web[maxRow]-1},
       (x)=>try Record.Field(List.Select(web[initialAttributedText][text]{0}, each (try Record.FieldCount(_{0}[c]{1}) otherwise 0 )> 0){0}{0}[c]{1},Text.From(x))[2]?{1}? otherwise null),web[maxCol]))
    in doc
in
    源

2.0数据抓取

已修复更改格式后无法刷新、支持添加公式的共享表格
(请勿频繁刷新或调用,否则可能被腾讯拦截ip)

// qqdoc2
(id as text,tab) => let
       web=Json.Document(Web.Contents("https://docs.qq.com/dop-api/opendoc?tab="&Text.From(if tab=null then "BB08J2" else tab)&"&id="&Text.From(id)&"&outformat=1&normal=1"))[clientVars][collab_client_vars],
       doc=Table.FromRows(List.Split(List.Transform({0..web[maxCol]*web[maxRow]-1},(x)=>try Record.Field(Record.Combine(List.Transform(List.Select(web[initialAttributedText][text]{0}, each (try Record.FieldCount(_{0}[c]{1}) otherwise 0)>0),each _{0}[c]{1})),Text.From(x))[2]?{1}? otherwise null),web[maxCol]))
    in doc

参考文档

https://pbihub.cn/blog/1121
https://pbihub.cn/qa/1102