如何用Excel Power Query从资产ID列表生成CMDB REST请求并调用?
用Excel Power Query生成CMDB REST URI并发起请求
方案一:生成单条批量请求URI并调用
假设资产ID存放在Excel的Sheet1中,A列格式如下(A1为标题ID,A2及以下为具体ID):
| ID |
|---|
| 1001 |
| 1002 |
| 1003 |
操作步骤:
- 导入数据到Power Query:点击「数据」选项卡 →「自表格/区域」,选中ID列数据,确认加载到Power Query编辑器。
- 生成批量参数串:
- 在编辑器的「转换」选项卡,点击「到列表」,将ID列转为列表。
- 点击「添加列」→「自定义列」,输入以下M代码生成带序号的参数列表:
let IDList = Source[ID], ParamList = List.Transform(IDList, (id, index) => "arg" & Text.PadStart(Text.From(index + 1), 2, "0") & "=" & Text.From(id)), ParamString = Text.Combine(ParamList, ";") in ParamString - 拼接完整请求URI:继续添加自定义步骤,生成最终URL:
let BaseURL = "https://my.cmdb.server/RESTService.pl?method=lst_asset:", FullURL = BaseURL & ParamString & ";" in FullURL
- 发起请求并解析数据:
- 添加步骤调用API(假设返回JSON格式,若为XML则替换为
Xml.Document):let Response = Web.Contents(FullURL), ParsedData = Json.Document(Response) in ParsedData - 点击「关闭并上载」,将返回的资产数据加载回Excel。
- 添加步骤调用API(假设返回JSON格式,若为XML则替换为
方案二:生成多条单个请求URI并调用
操作步骤:
- 同样将ID列导入Power Query编辑器。
- 生成单个请求URI:
- 点击「添加列」→「自定义列」,输入公式生成每条ID对应的URL:
"https://my.cmdb.server/RESTService.pl?method=lst_asset:arg01=" & Text.From([ID]) - 将该列重命名为
RequestURL。
- 点击「添加列」→「自定义列」,输入公式生成每条ID对应的URL:
- 创建处理单条请求的自定义函数:
- 打开「高级编辑器」,插入以下函数代码(放在现有代码最上方):
let GetCMDBData = (url as text) => let Source = Web.Contents(url), ParsedResult = Json.Document(Source) in ParsedResult in GetCMDBData
- 打开「高级编辑器」,插入以下函数代码(放在现有代码最上方):
- 批量调用API并展开数据:
- 添加自定义列,调用上述函数:
GetCMDBData([RequestURL]) - 点击该列的展开按钮,选择需要加载的字段,完成数据展开。
- 添加自定义列,调用上述函数:
- 关闭并上载数据到Excel。
注意事项
- 若API需要认证(如Token、API Key),可在
Web.Contents中添加请求头参数,示例:Web.Contents(url, [Headers=[Authorization="Bearer YOUR_TOKEN"]])。 - 若遇到隐私级别提示,可在Power Query的「文件」→「选项和设置」→「查询选项」→「隐私」中,设置为「忽略隐私级别检查」。
内容的提问来源于stack exchange,提问作者Magic Thighs
相关产品推荐
相关产品推荐

