You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA发送HTTP请求调用iAuditor接口时如何传递curl的-d过滤参数

VBA实现按template_id过滤拉取iAuditor Actions列表

你原代码返回全量数据的原因是POST请求没有携带过滤用的请求体,直接把curl示例中-d对应的JSON内容按VBA语法转义后,传入.Send方法即可,不需要额外安装JSON依赖库。

完整可运行代码

Sub Get_Filtered_Actions()
Dim hReq As Object
Dim sht As Worksheet
Dim authKey As String
Dim response As String
Dim requestBody As String
Dim targetTemplateId As String

' 配置参数
authKey = "d8a0df7d7e1XXXXXXXXXXXXXXXXXXXXXXXXff3c765cf2fcf" ' 替换为你的实际API密钥
targetTemplateId = "fc2e53f6-4712-4ca5-b681-aba3ac954217" ' 替换为你要过滤的目标模板ID

Set sht = Sheets(1)

' 构造JSON请求体:VBA字符串内的双引号需要用两个连续双引号转义
requestBody = "{""template_id"":{""operator"":7,""value"":[""" & targetTemplateId & """]}}"

Dim strUrl As String
strUrl = "https://api.safetyculture.io/tasks/v1/actions/list"
Set hReq = CreateObject("MSXML2.XMLHTTP")
    With hReq
        .Open "POST", strUrl, False
        .SetRequestHeader "Authorization", "Bearer " & authKey
        .SetRequestHeader "Content-Type", "application/json"
        .Send requestBody ' 传入构造好的过滤参数
    End With

' 输出返回结果
response = hReq.ResponseText
sht.Range("A1") = response
End Sub

关键注意点

  • VBA字符串语法要求:字符串内部的双引号必须写两个连续双引号做转义,否则会报语法错误,拼接完成的JSON结构和curl示例里的-d参数内容完全一致
  • 多模板过滤场景:如果需要匹配多个模板ID,直接修改value数组内容即可,示例格式:"value":["模板ID1","模板ID2"]
  • operator字段值固定填7即可,对应接口规则里的「包含」匹配逻辑
  • 调试时可以在.Send前加Debug.Print requestBody或者MsgBox requestBody,检查拼接出来的JSON格式是否合法,排除格式错误导致的接口报错

扩展提示:如果需要加其他过滤条件、分页参数(比如page_size、page_token),直接按照相同的键值对规则拼接到requestBody字符串里即可,写法和template_id参数完全一致。

内容的提问来源于stack exchange,提问作者Legomanfr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:15:32