#python #api #survey #qualtrics #alteryx
#python #API #опрос #qualtrics #alteryx
Вопрос:
Я успешно настроил API Qualtrics для экспорта контактов из работы с примером скрипта с их веб-сайта. Моя проблема в том, что API экспортирует только 100 контактов одновременно. Кажется, если я использую URL-адрес из поля nextPage в моем первоначальном экспорте json для выполнения другого вызова API, я могу получить еще 100, но это не идеально. Иногда у меня есть списки с более чем 10 000 человек, и я не могу работать с этим вручную.
Я новичок в Python и хотел бы знать, как можно использовать функцию URL-адреса nextPage для получения более 100 ответов одновременно.
Вызов API выглядит следующим образом
# List Contacts in Mailing List
import requests
# Setting user Parameters
apiToken = "YOUR API TOKEN"
dataCenter = "YOUR DATACENTER"
directoryId = "POOL_123456"
mailingListId = "CG_123456"
baseUrl = "https://{0}.qualtrics.com/API/v3/directories/{1}/mailinglists/{2}/contacts".format(dataCenter, directoryId, mailingListId)
headers = {
"x-api-token": apiToken,
}
response = requests.get(baseUrl, headers=headers)
print(response.text)
И я получаю аналогичные результаты только со 100 ответами:
{
"meta": {
"httpStatus": "200 - OK",
"requestId": "7de14d38-f5ed-49d0-9ff0-773e12b896b8"
},
"result": {
"elements": [
{
"contactId": "CID_123456",
"email": "js@example.com",
"extRef": "1234567",
"firstName": "James",
"language": "en",
"lastName": "Smith",
"phone": "8005552000",
"unsubscribed": false
},
{
"contactId": "CID_3456789",
"email": "person@example.com",
"extRef": "12345678",
"firstName": "John",
"language": "en",
"lastName": "Smith",
"phone": "8005551212",
"unsubscribed": true
}
],
"nextPage": null
}
}
У кого-нибудь есть идея, как я могу зациклить информацию о следующей странице, чтобы получить весь список контактов, независимо от того, сколько наборов из 100 содержится? У меня есть несколько списков, в которых есть десятки, сотни и тысячи контактов, и я хотел бы, чтобы это работало для всех.
Ценю любой вклад! Спасибо!
Ответ №1:
Используйте цикл while и переименуйте baseUrl в nextPage:
nextPage = "https://{0}.qualtrics.com/API/v3/directories/{1}/mailinglists/{2}/contacts".format(dataCenter, directoryId, mailingListId)
while nextPage is not None:
response = requests.get(nextPage, headers=headers)
json_data = json.loads(response.text)
#process json_data
nextPage = json_data['result']['nextPage']
Комментарии:
1. Как раз то, что я ищу! Кажется, что это сработает, но когда я заменяю baseUrl на nextPage вместе со сценарием цикла, кажется, что вообще ничего не происходит. Я не получаю никаких результатов в ответ. Не уверен, что там не так.