Survey Monkey API 查询参数在 Excel VBA 上不起作用

Survey Monkey API Query Parameters not working on Excel VBA

我有一个包装函数,它在 Excel VBA:

上调用 Survey Monkey 方法
Function SM_Method(https As String, method As String, query As Variant) As String
    Dim objSM As Object
    Set objSM = CreateObject("MSXML2.XMLHTTP.6.0")

    With objSM
        .Open https, charSMAPI & method & "?api_key=" & charAPIKey
        .setRequestHeader "Authorization", "Bearer " & charToken
        .setRequestHeader "Content-Type", "application/json"
        .Send query
        SM_Method = .responseText
    End With
End Function

我如下调用此函数,它指定 API 查询以打印出某些字段:

Dim Request As Variant
Request = "{""fields"":[""per_page""]" & "}"
MsgBox (SM_Method("GET", "/surveys", Request))

但是上面的消息框还打印出了其他字段如"total"、"data"、"page"、"links"等...

我很想让查询参数正常工作,并且想知道我上面的代码有什么问题。非常感谢您的帮助!

您要执行的请求是:

/v3/surveys?api_key=<key>&fields=per_page

并期望字段 returned 仅为 per_page(无数据或其他任何内容)?

我认为这行不通,我认为 fields url 参数仅适用于特定资源,不适用于资源列表。

因此,如果您想过滤掉特定的调查,这会起作用:

/v3/surveys/<survey_id>?api_key=<key>&fields=title

但对于资源列表而言,它总是 return 可用项目的总数、您当前所在的页面、每页的项目数、分页链接以及所有data.

下的资源项目

编辑:解释如何获得调查回复

获取调查回复的文档是 here。根据您的评论,您想做的是:

GET /v3/surveys/<id>/responses?api_key=<key>&email=<email>&start_created_at=<begin_range>&end_created_at=<end_range>

这将为您提供回复者的所有回复(按 ID),回复者使用提供的电子邮件,并在 和 指定的日期范围内。

然后您可以在此处获取该回复的所有详细信息(每个页面的每个答案):

GET /v3/surveys/<id>/responses/<response_id>?api_key=<key>

鉴于您正在使用电子邮件收集器(这就是您收集他们的电子邮件的方式),并且该调查的列表中实际上应该只有一个响应 ID returned,除非他们回答调查的次数超过一次。如果是这样,那么您可以

GET /v3/surveys/<id>/responses/bulk?api_key=<key>&email=<email>&start_created_at=<begin_range>&end_created_at=<end_range>

只有一个请求,您可以获得所有回复,包括在一个请求中给定电子邮件的答复。

我有这样的代码 vRequestBody = "{""survey_id"":" & Quoted(sSurveyID) _ & ", ""fields"":[""collector_id"", ""url"", ""open"", ""type"", ""name" ", ""date_created"", ""date_modified""]" _ & "}"

vRequestBody = "{"_ & JKeyValue("fields", 数组("title", "date_created", "date_modified", "num_responses", _ "language_id"、"question_count"、"preview_url"、"analysis_url")) & "}"

其中 JKeyValue 使用 json class https://code.google.com/archive/p/vba-json/

函数引用(var As Variant)作为字符串 Quoted = Chr(34) & Replace(var, Chr(34), "''") & Chr(34) ' "str" 用成对的单引号替换嵌入的双引号 结束函数

函数 JKeyValue(sKey As String, vValues As Variant) As String 将 jLib 调暗为新的 ClsJSONLib JKeyValue = jLib.toString(sKey) & ":" & jLib.toString(vValues) 设置 jLib = 无 结束函数