<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Qualtrics API/Python Script in Developer</title>
    <link>https://community.fabric.microsoft.com/t5/Developer/Qualtrics-API-Python-Script/m-p/719125#M19710</link>
    <description>&lt;P&gt;I've been trying for the longest to figure out how to import survey results from Qualtrics into Power BI using Python. Qualtrics support has given me code and I was told all I needed to do was change the apiToken, surveyId, fileFormat and dataCenter lines below but I have not been able to get this to work:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Python 3&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import requests&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import json&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import io, os&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import sys&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import pandas&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;from pandas.io.json import json_normalize&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Setting user Parameters&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;apiToken = '[ID]'&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;surveyId = "[ID]"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fileFormat = "csv"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;dataCenter = ‘[Datacenter]’&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Setting static parameters&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;requestCheckProgress = 0.0&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;progressStatus = "inProgress"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;baseUrl = "https://{0}.qualtrics.com/API/v3/surveys/{1}/export-responses/".format(dataCenter, surveyId)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;headers = {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "content-type": "application/json",&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "x-api-token": apiToken,&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Step 1: Creating Data Export&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;downloadRequestUrl = baseUrl&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;downloadRequestPayload = {"format": fileFormat, "compress": False, "useLabels": True}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;downloadRequestResponse = requests.request("POST", downloadRequestUrl, json=downloadRequestPayload, headers=headers)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;progressId = downloadRequestResponse.json()["result"]["progressId"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;print(downloadRequestResponse.text)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Step 2: Checking on Data Export Progress and waiting until export is ready&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;while progressStatus != "complete" and progressStatus != "failed":&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print ("progressStatus=", progressStatus)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestCheckUrl = baseUrl + progressId&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestCheckResponse = requests.request("GET", requestCheckUrl, headers=headers)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestCheckProgress = requestCheckResponse.json()["result"]["percentComplete"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("Download is " + str(requestCheckProgress) + " complete")&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; progressStatus = requestCheckResponse.json()["result"]["status"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#step 2.1: Check for error&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;if progressStatus is "failed":&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise Exception("export failed")&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fileId = requestCheckResponse.json()["result"]["fileId"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Step 3: Downloading file&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;requestDownloadUrl = baseUrl + fileId + '/file'&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;requestDownload = requests.request("GET", requestDownloadUrl, headers=headers, stream=True)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#data = json.loads(requestDownload.content)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#df = json_normalize(data['responses'])&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;data = requestDownload.content&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;df = pandas.read_csv(io.StringIO(data.decode("utf-8")))&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;df&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm not a developer nor do I have Python experience, so I have no clue what I would need to change to get what I'm looking for. I'm slightly confused because this seems to be code for exporting results to a CSV, but I was hoping to connect straight from Power BI to Qualtrics.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 19 Jun 2019 14:28:51 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2019-06-19T14:28:51Z</dc:date>
    <item>
      <title>Qualtrics API/Python Script</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/Qualtrics-API-Python-Script/m-p/719125#M19710</link>
      <description>&lt;P&gt;I've been trying for the longest to figure out how to import survey results from Qualtrics into Power BI using Python. Qualtrics support has given me code and I was told all I needed to do was change the apiToken, surveyId, fileFormat and dataCenter lines below but I have not been able to get this to work:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Python 3&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import requests&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import json&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import io, os&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import sys&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import pandas&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;from pandas.io.json import json_normalize&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Setting user Parameters&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;apiToken = '[ID]'&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;surveyId = "[ID]"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fileFormat = "csv"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;dataCenter = ‘[Datacenter]’&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Setting static parameters&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;requestCheckProgress = 0.0&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;progressStatus = "inProgress"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;baseUrl = "https://{0}.qualtrics.com/API/v3/surveys/{1}/export-responses/".format(dataCenter, surveyId)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;headers = {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "content-type": "application/json",&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "x-api-token": apiToken,&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Step 1: Creating Data Export&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;downloadRequestUrl = baseUrl&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;downloadRequestPayload = {"format": fileFormat, "compress": False, "useLabels": True}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;downloadRequestResponse = requests.request("POST", downloadRequestUrl, json=downloadRequestPayload, headers=headers)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;progressId = downloadRequestResponse.json()["result"]["progressId"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;print(downloadRequestResponse.text)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Step 2: Checking on Data Export Progress and waiting until export is ready&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;while progressStatus != "complete" and progressStatus != "failed":&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print ("progressStatus=", progressStatus)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestCheckUrl = baseUrl + progressId&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestCheckResponse = requests.request("GET", requestCheckUrl, headers=headers)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; requestCheckProgress = requestCheckResponse.json()["result"]["percentComplete"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("Download is " + str(requestCheckProgress) + " complete")&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; progressStatus = requestCheckResponse.json()["result"]["status"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#step 2.1: Check for error&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;if progressStatus is "failed":&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise Exception("export failed")&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fileId = requestCheckResponse.json()["result"]["fileId"]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;# Step 3: Downloading file&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;requestDownloadUrl = baseUrl + fileId + '/file'&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;requestDownload = requests.request("GET", requestDownloadUrl, headers=headers, stream=True)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#data = json.loads(requestDownload.content)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#df = json_normalize(data['responses'])&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;data = requestDownload.content&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;df = pandas.read_csv(io.StringIO(data.decode("utf-8")))&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;df&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm not a developer nor do I have Python experience, so I have no clue what I would need to change to get what I'm looking for. I'm slightly confused because this seems to be code for exporting results to a CSV, but I was hoping to connect straight from Power BI to Qualtrics.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jun 2019 14:28:51 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/Qualtrics-API-Python-Script/m-p/719125#M19710</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-06-19T14:28:51Z</dc:date>
    </item>
  </channel>
</rss>

