首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MS-Access get调用Qualtrics API运行时错误消息449参数不是可选的

MS-Access get调用Qualtrics API运行时错误消息449参数不是可选的
EN

Stack Overflow用户
提问于 2020-01-23 09:05:03
回答 1查看 108关注 0票数 0

我刚接触Access,目前在一家HIV研究实验室担任数据系统经理。我们使用Qualtrics为参与者创建在线调查,并使用Access to call Qualtrics API将参与者添加到Qualtrics联系人面板,自动为他们生成调查链接,通过电子邮件将调查分发链接发送给参与者,并通过导出的文件存储他们的回复。

以下是Qualtrics API文档的链接:https://api.qualtrics.com/

我正在将所有的Qualtrics函数迁移到v3,并在尝试为参与者生成调查分发链接并向他们发送带有调查链接的电子邮件时遇到此运行时参数而不是可选错误。

下面是我正在开发的Qualtrics函数的API文档链接-- CreateSurveyDistributionLinks:

https://api.qualtrics.com/reference#distribution-create-1

https://api.qualtrics.com/reference#email-mailing-list

下面显示了我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
Public Function createSurveyDistributionLinks(strSubject As String, _
     strMessageID As String, strRecipients As String, strSurveyID As String, _
     dtSendDate As Date, dtExpirationDate As Date)

'note: this function does not contain message feature as it is not 
'  used in 1KS. Can add for other uses by including a dicMessage object
Dim strURL As String
Dim JSON As Object
Dim dicMessage As Dictionary
Dim dicHeader As Dictionary
Dim strBodyJson As String
Dim strFromEmail As String
Dim strFromName As String


    Me.initObject
    strURL = "https://az1.qualtrics.com/API/v3/distributions"

    strFromEmail = "day2day%40chestnyc.org"
    strFromName = "day2day"
    strFromName = Replace(strFromName, " ", "%20") 'Convert spaces
    strSubject = Replace(strSubject, " ", "%20") 'Convert spaces


    Set dicHeader = New Dictionary

    dicHeader("fromEmail") = strFromEmail
    dicHeader("fromName") = strFromName
    dicHeader("subject") = strSubject

    Set dicMessage = New Dictionary
    dicMessage("messageId") = strMessageID
    dicMessage("libraryId") = strLibID

    dicMessage("header") = dicHeader


    Set dicBody = New Dictionary
    dicBody("recipients") = strRecipients
    dicBody("surveyId") = strSurveyID
    dicBody("sendDate") = formatQualtricsTimes(dtSendDate)
    dicBody("expirationDate") = formatQualtricsTimes(Nz(dtExpirationDate, "2050-01-01 00:00:00"))
    dicBody("message") = dicMessage

    strBodyJson = JsonConverter.ConvertToJson(dicBody)
    Debug.Print strBodyJson

    With xmlhttprequester
        .Open "POST", strURL
        .setRequestHeader "X-API-TOKEN", strToken
        .setRequestHeader "Content-Type", "application/json"
        .send strBodyJson

        .waitForResponse
        If InStr(.responseText, "EMD_") > 0 Then
            'it worked!
            Set JSON = JsonConverter.ParseJson(.responseText)
            Dim strrand As String
            createSurveyDistributionLinks = JSON("result")("id")
            Debug.Print JSON("result")("id")
        Else
            Debug.Print "an error has occurred" & vbNewLine & .responseText
            createSurveyDistributionLinks = "false"
        End If
    End With

End Function

下面是我遇到运行时错误的代码行:

代码语言:javascript
代码运行次数:0
运行
复制
 strDistributionID = oQual.createSurveyDistributionLinks(strSubject, _
    strMessageID, strRecipientID, strSurveyID, CStr(dtExpTime), CStr(dtTime))

我真的很感谢你所有的见解,真的希望我的代码可以工作!!

最好的,杰西

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 07:39:45

当在VBA中使用自定义类时,你需要确保你的VBA错误处理设置为“中断类模块”,否则你不会在你的类实例中看到潜在的错误(你只会在入口点得到一个错误-在本例中是调用oQual.createSurveyDistributionLinks的那一行)。

在将对象类型变量分配给字典时,您的代码应该包含Set

代码语言:javascript
代码运行次数:0
运行
复制
Set dicMessage("header") = dicHeader 

Set dicBody("message") = dicMessage
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59870348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档