Qualtrics API - 某些列从字符串变为数字
Qualtrics API - Certain columns change from string to number
我正在下载我们在 Qualtrics 中进行的一项调查的数据。我找到了 Python 3 个示例代码 (https://api.qualtrics.com/docs/response-exports) 并围绕它编写了我的代码。
成功下载后,我注意到为用户提供选项列表 select 的问题被下载为数字(我怀疑答案的索引 selected)。
我相信答案很简单,只需输入一些参数来以不同方式下载数据,但我似乎无法在 Qualtric 的 API 文档中找到它。
This is what the data looks like when I use this program
This is what I want it to look like
这是我的 api 凭据已更改的代码:
import shutil
import os
import requests
import zipfile
import json
import io
# Setting user Parameters
apiToken = "myKey"
surveyId = "mySurveyID"
fileFormat = "csv"
dataCenter = "az1"
# Setting static parameters
requestCheckProgress = 0
progressStatus = "in progress"
baseUrl = "https://{0}.qualtrics.com/API/v3/responseexports/".format(dataCenter)
headers = {
"content-type": "application/json",
"x-api-token": apiToken,
}
# Step 1: Creating Data Export
downloadRequestUrl = baseUrl
downloadRequestPayload = '{"format":"' + fileFormat + '","surveyId":"' + surveyId + '"}'
downloadRequestResponse = requests.request("POST", downloadRequestUrl, data=downloadRequestPayload, headers=headers)
progressId = downloadRequestResponse.json()["result"]["id"]
print(downloadRequestResponse.text)
#print (requests)
# Step 2: Checking on Data Export Progress and waiting until export is ready
while requestCheckProgress < 100 and progressStatus is not "complete":
requestCheckUrl = baseUrl + progressId
requestCheckResponse = requests.request("GET", requestCheckUrl, headers=headers)
requestCheckProgress = requestCheckResponse.json()["result"]["percentComplete"]
print("Download is " + str(requestCheckProgress) + " complete")
# Step 3: Downloading file
requestDownloadUrl = baseUrl + progressId + '/file'
requestDownload = requests.request("GET", requestDownloadUrl, headers=headers, stream=True)
# Step 4: Unzipping the file
zipfile.ZipFile(io.BytesIO(requestDownload.content)).extractall("MyQualtricsDownload")
# Step 5: Move the file out of the folder and place it in the working directory --> change the paths to the appropiate paths for the server
shutil.move( "/Users/Abram/Documents/PCC/MyQualtricsDownload/Mindshare English v21.csv", "/Users/Abram/Documents/PCC/Mindshare English v21.csv")
os.rmdir("/Users/Abram/Documents/PCC/MyQualtricsDownload/")
print('Complete')
谢谢 :)
将 useLabels 参数设置为真:https://api.qualtrics.com/docs/create-response-export
终于想通了。是的,需要添加 useLabels 参数,但使用我上面提供的代码是不够的。出于某种原因 JSON 不接受它,我相信它需要一个布尔值来类型转换为 JSON 而不仅仅是一个看起来像布尔值的字符串。所以我制作了一本字典并加载了参数并在字典上使用了 JSON.dumps() ,它就像一个魅力。希望这可以帮助任何其他想要带有标签的数据的人。
useLabels = True
dictionaryPayload = {'format': fileFormat, 'surveyId': surveyId, 'useLabels': useLabels}
downloadRequestPayload = json.dumps(dictionaryPayload)
我正在下载我们在 Qualtrics 中进行的一项调查的数据。我找到了 Python 3 个示例代码 (https://api.qualtrics.com/docs/response-exports) 并围绕它编写了我的代码。
成功下载后,我注意到为用户提供选项列表 select 的问题被下载为数字(我怀疑答案的索引 selected)。
我相信答案很简单,只需输入一些参数来以不同方式下载数据,但我似乎无法在 Qualtric 的 API 文档中找到它。
This is what the data looks like when I use this program
This is what I want it to look like
这是我的 api 凭据已更改的代码:
import shutil
import os
import requests
import zipfile
import json
import io
# Setting user Parameters
apiToken = "myKey"
surveyId = "mySurveyID"
fileFormat = "csv"
dataCenter = "az1"
# Setting static parameters
requestCheckProgress = 0
progressStatus = "in progress"
baseUrl = "https://{0}.qualtrics.com/API/v3/responseexports/".format(dataCenter)
headers = {
"content-type": "application/json",
"x-api-token": apiToken,
}
# Step 1: Creating Data Export
downloadRequestUrl = baseUrl
downloadRequestPayload = '{"format":"' + fileFormat + '","surveyId":"' + surveyId + '"}'
downloadRequestResponse = requests.request("POST", downloadRequestUrl, data=downloadRequestPayload, headers=headers)
progressId = downloadRequestResponse.json()["result"]["id"]
print(downloadRequestResponse.text)
#print (requests)
# Step 2: Checking on Data Export Progress and waiting until export is ready
while requestCheckProgress < 100 and progressStatus is not "complete":
requestCheckUrl = baseUrl + progressId
requestCheckResponse = requests.request("GET", requestCheckUrl, headers=headers)
requestCheckProgress = requestCheckResponse.json()["result"]["percentComplete"]
print("Download is " + str(requestCheckProgress) + " complete")
# Step 3: Downloading file
requestDownloadUrl = baseUrl + progressId + '/file'
requestDownload = requests.request("GET", requestDownloadUrl, headers=headers, stream=True)
# Step 4: Unzipping the file
zipfile.ZipFile(io.BytesIO(requestDownload.content)).extractall("MyQualtricsDownload")
# Step 5: Move the file out of the folder and place it in the working directory --> change the paths to the appropiate paths for the server
shutil.move( "/Users/Abram/Documents/PCC/MyQualtricsDownload/Mindshare English v21.csv", "/Users/Abram/Documents/PCC/Mindshare English v21.csv")
os.rmdir("/Users/Abram/Documents/PCC/MyQualtricsDownload/")
print('Complete')
谢谢 :)
将 useLabels 参数设置为真:https://api.qualtrics.com/docs/create-response-export
终于想通了。是的,需要添加 useLabels 参数,但使用我上面提供的代码是不够的。出于某种原因 JSON 不接受它,我相信它需要一个布尔值来类型转换为 JSON 而不仅仅是一个看起来像布尔值的字符串。所以我制作了一本字典并加载了参数并在字典上使用了 JSON.dumps() ,它就像一个魅力。希望这可以帮助任何其他想要带有标签的数据的人。
useLabels = True
dictionaryPayload = {'format': fileFormat, 'surveyId': surveyId, 'useLabels': useLabels}
downloadRequestPayload = json.dumps(dictionaryPayload)