我曾经用QualtricsAPI进行过一次调查,在那里我刚刚使用了他们文档中的代码样本 https://api.qualtrics.com/docs/getting-survey-responses-via-the-new-export-apis
代码运行良好:
import requests
import zipfile
import json
import io, os
import sys
import re
import logging
logging.basicConfig(level=logging.DEBUG, filename='application.log',
format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
"""
Function to export survey from the qualtricks api.
"""
def exportSurvey(apiToken, surveyId, dataCenter, fileFormat):
surveyId = surveyId
fileFormat = fileFormat
dataCenter = dataCenter
# Setting static parameters
requestCheckProgress = 0.0
progressStatus = "inProgress"
baseUrl = "https://{0}.qualtrics.com/API/v3/surveys/{1}/export-responses/".format(dataCenter, surveyId)
headers = {
"content-type": "application/json",
"x-api-token": apiToken,
}
# Step 1: Creating Data Export
downloadRequestUrl = baseUrl
downloadRequestPayload = '{"format":"' + fileFormat + '"}'
downloadRequestResponse = requests.request("POST", downloadRequestUrl, data=downloadRequestPayload, headers=headers)
progressId = downloadRequestResponse.json()["result"]["progressId"]
print(downloadRequestResponse.text)
# Step 2: Checking on Data Export Progress and waiting until export is ready
while progressStatus != "complete" and progressStatus != "failed":
print("progressStatus=", progressStatus)
requestCheckUrl = baseUrl + progressId
requestCheckResponse = requests.request("GET", requestCheckUrl, headers=headers)
requestCheckProgress = requestCheckResponse.json()["result"]["percentComplete"]
print("Download is " + str(requestCheckProgress) + " complete")
progressStatus = requestCheckResponse.json()["result"]["status"]
# step 2.1: Check for error
if progressStatus is "failed":
logging.error("Could not export file")
raise Exception("export failed")
fileId = requestCheckResponse.json()["result"]["fileId"]
# Step 3: Downloading file
requestDownloadUrl = baseUrl + fileId + '/file'
requestDownload = requests.request("GET", requestDownloadUrl, headers=headers, stream=True)
# Step 4: Unzipping the file
zipfile.ZipFile(io.BytesIO(requestDownload.content)).extractall("Files")
print('Complete')
logging.info("Successfully downloaded file")
def main(apiToken, surveyId, dataCenter, fileFormat):
if fileFormat not in ["csv", "tsv", "spss"]:
logging.error("File format was given in wrong format")
print('fileFormat must be either csv, tsv, or spss')
sys.exit(2)
r = re.compile('^SV_.*')
m = r.match(surveyId)
if not m:
logging.error("Survey id did not match the right format")
print("survey Id must match ^SV_.*")
sys.exit(2)
exportSurvey(apiToken, surveyId, dataCenter, fileFormat)
if __name__ == "__main__":
apiToken = 'XXX # hardcoded apiToken
cyber_survey_19 = {
"data_center": 'XX',
"survey_id": 'XXX', # hard coded survey id for the fist dyber survey.
"file_format": 'csv'
}
cyber_survey_17 = {
"data_center": 'XXX',
"survey_id": 'XXX', # hard coded survey id for the fist dyber survey.
"file_format": 'csv'
}
main(apiToken, surveyId=cyber_survey_17['survey_id'], dataCenter=cyber_survey_17['data_center'], fileFormat=cyber_survey_17['file_format'])
问题是调查结果是这样的。你知道吗
StartDate,EndDate,Status,IPAddress,Progress,Duration (in seconds),Finished,RecordedDate,ResponseId,RecipientLastName,RecipientFirstName,RecipientEmail,ExternalReference,LocationLatitude,LocationLongitude,DistributionChannel,UserLanguage,Q1,Q1_17_TEXT,Q2,Q2_13_TEXT,Q4,Q5_1,Q5_2,Q6,Q7,Q8,Q9,Q10_1,Q10_2,Q11_1,Q11_2,Q12_1_1,Q12_1_2,Q12_2_1,Q12_2_2,Q12_3_1,Q12_3_2,Q12_4_1,Q12_4_2,Q12_5_1,Q12_5_2,Q12_6_1,Q12_6_2,Q12_7_1,Q12_7_2,Q12_8_1,Q12_8_2,Q12_9_1,Q12_9_2,Q12_10_1,Q12_10_2,Q12_11_1,Q12_11_2,Q12_12_1,Q12_12_2,Q29,Q16,Q14_1,Q14_2,Q14_3,Q14_4,Q14_5,Q14_6,Q14_7,Q14_8,Q14_9,Q14_10,Q14_11,Q14_12,Q14_13,Q14_14,Q14_15,Q14_14_TEXT,Q15_1,Q15_2,Q15_3,Q15_4,Q15_5,Q15_6,Q15_7,Q15_8,Q15_9,Q15_10,Q15_9_TEXT,Q17,Q18_1,Q18_2,Q18_3,Q18_4,Q18_5,Q18_6,Q18_7,Q18_8,Q18_9,Q18_10,Q18_11,Q18_12,Q18_13,Q18_14,Q18_13_TEXT,Q19,Q20,Q20_4_TEXT,Q21_1,Q21_2,Q22,Q24_1,Q24_2,Q24_3,Q24_4,Q25_1,Q25_2,Q26,Q27,Q28,Q29,Q30_1,Q30_2,Q30_3,Q30_4,Partner,Country,Source,Q14_14_TEXT - Sentiment,Q14_14_TEXT - Sentiment Score,Q14_14_TEXT - Sentiment Polarity,Q14_14_TEXT - Topics
Start Date,End Date,Response Type,IP Address,Progress,Duration (in seconds),Finished,Recorded Date,Response ID,Recipient Last Name,Recipient First Name,Recipient Email,External Data Reference,Location Latitude,Location Longitude,Distribution Channel,User Language,Hvad er din primære funktion/titel? - Selected Choice,Hvad er din primære funktion/titel? - Anden funktion: - Text,Hvem i ledelsen er ansvarlig for informations- /cybersikkerheden - Selected Choice,Hvem i ledelsen er ansvarlig for informations- /cybersikkerheden - Andet - Text,Har I i din virksomhed et dedikeret budget for informations-/cybersikkerhed?,"Hvor stort er budgettet?
Nedenstående skal vurderes i forhold til den aktuelle situation og 18 måneder frem - I dag?","Hvor stort er budgettet?
Nedenstående skal vurderes i forhold til den aktuelle situation og 18 måneder frem - 18 måneder frem?","I hvilken grad har direktionen/ledelsen, efter din opfattelse, fokus på at opnå den rette balance mellem de cybertrusler, din virksomhed står overfor, og jeres investeringer i cybersikkerhed?",Hvor ofte briefer virksomhedens sikkerhedsansvarlige virksomhedens direktion om risikoen ved cybertrusler?,"I hvilken grad vurderer du, at din virksomheds bestyrelse bruger tid på at drøfte spørgsmål om cyber- og/eller informationssikkerhed på bestyrelsesmøderne?","Bekymrer du dig mere eller mindre om de cybertrusler, I i din virksomhed oplever i dag, end du gjorde for 12 måneder siden?","Hvor mange gange har I i din virksomhed været udsat for en sikkerhedshændelse, som havde en negativ påvirkning på forretningen?
En sikkerhedshændelse defineres i det følgende som:
En hændelse, der negativt påvirker eller vurderes at ville kunne påvirke forretningens data-tilgængelighed, -integritet eller -fortrolighed, informationssystemer, digitale netværk eller digitale tjenester. - Seneste regnskabsår","Hvor mange gange har I i din virksomhed været udsat for en sikkerhedshændelse, som havde en negativ påvirkning på forretningen?
En sikkerhedshændelse defineres i det følgende som:
在csv文件中包含问题的地方,我发现我可以从UI中添加这个选项,只从列中获取数据。你知道吗
如何将此选项添加到api调用,或者是否有其他方法来执行此操作?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐