如何在Power Query自定义连接器中添加参数下拉列表并附加到API请求
如何在Power Query自定义连接器中添加下拉参数选择器?
这个需求太实用了——手动输入文本不仅麻烦,还容易打错导致API请求失败,换成固定选项的下拉框完美解决这个问题。我来帮你改造现有代码,实现这个功能:
核心思路
我们需要在Power Query中定义一个自定义枚举类型,把允许的short_term、medium_term、long_term(注意要和你的API接受的参数值对应)作为可选值,然后将函数参数的类型指定为这个自定义类型,这样Power Query的参数输入界面就会自动显示下拉列表了。
修改后的完整代码
// 第一步:定义自定义枚举类型,指定下拉选项和说明 TimeRangeType = type text meta [ Documentation.FieldCaption = "时间范围", Documentation.FieldDescription = "选择要获取的数据时间范围", Type.List = {"short_term", "medium_term", "long_term"}, // 与API预期值匹配 Type.IsNullable = false // 强制用户必须选择一个选项,若允许留空可改为true ] // 导航器中暴露的函数 (time_range as TimeRangeType optional) as table => GetSomething(time_range) // 实际请求函数 GetSomething = (time_range as TimeRangeType optional) => let // 处理默认值:如果用户没选(当参数可选时),用medium_term兜底 _time_range = if time_range <> null then time_range else "medium_term", options = [ Headers = [#"Content-Type" = "application/Json"], Query = [limit = "50", time_range=_time_range] ], source = Web.Contents("https://example.com/v1/me/", options), json = Json.Document(source), listOfItems = json[items] in listOfItems;
关键细节说明
- 自定义类型的元数据:
Documentation里的内容会显示在Power Query的参数输入面板上,帮助用户理解每个选项的作用;Type.List就是下拉框里的可选值列表,必须严格和API接受的参数值一致。 - 参数可选性:如果希望用户可以不选参数(用默认值),就在类型后面加
optional,同时保留默认值的逻辑;如果想强制用户选择,就去掉optional并把Type.IsNullable设为false。 - 避免错误:因为类型已经限制了可选值,用户再也不可能输入无效的文本,彻底避免了因参数错误导致的API请求失败。
内容的提问来源于stack exchange,提问作者Dreekun
相关产品推荐
相关产品推荐

