Power Query对接Kobo Toolbox API:用Web.Contents()实现Excel数据过滤
问题根源
你的代码存在两处核心错误导致过滤失效:
- Web.Contents的
Query配置项要求传入键值对格式的记录,你直接传入了过滤JSON字符串,未指定query参数名,服务端无法识别过滤规则,默认返回全量数据 - 过滤JSON中使用了中文双引号、重复双引号的错误写法,不符合JSON语法规范,即使参数名正确也会被服务端判定为无效过滤条件
修正后的完整Power Query代码
let // 定义符合JSON语法的过滤规则,使用英文双引号,Power Query中字符串内的双引号用两个双引号转义 FilterJson = "{""$and"": [{""assessor_details/date_of_assessment"": {""$gte"": ""2021-08-01""}},{""assessor_details/date_of_assessment"": {""$lt"": ""2021-09-01""}}]}", Source = Json.Document(Web.Contents( "https://kc.humanitarianresponse.info/api/v1/data/814220", [ // Query参数传标准键值对记录,key为API要求的query参数名 Query = [query = FilterJson], Headers = [Authorization="token 替换为你实际的授权令牌"] ] )), #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error) in #"Converted to Table"
补充注意事项
如果运行后出现服务端解析过滤规则失败的报错,可以对过滤JSON做URL编码处理,修改Query行即可:Query = [query = Uri.EscapeDataString(FilterJson)]
首次运行如果弹出权限验证提示,选择「匿名」即可,身份认证已经通过Header内的token完成。
内容的提问来源于stack exchange,提问作者Steven Dixon
相关产品推荐
相关产品推荐

