我刚接触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
下面显示了我的代码:
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
下面是我遇到运行时错误的代码行:
strDistributionID = oQual.createSurveyDistributionLinks(strSubject, _
strMessageID, strRecipientID, strSurveyID, CStr(dtExpTime), CStr(dtTime))
我真的很感谢你所有的见解,真的希望我的代码可以工作!!
最好的,杰西
发布于 2020-01-23 23:39:45
当在VBA中使用自定义类时,你需要确保你的VBA错误处理设置为“中断类模块”,否则你不会在你的类实例中看到潜在的错误(你只会在入口点得到一个错误-在本例中是调用oQual.createSurveyDistributionLinks
的那一行)。
在将对象类型变量分配给字典时,您的代码应该包含Set
:
Set dicMessage("header") = dicHeader
Set dicBody("message") = dicMessage
https://stackoverflow.com/questions/59870348
复制相似问题