首页 > 解决方案 > 使用 nextPage URL 使用 Qualtrics API 获取 100 多个联系人

问题描述

我成功地设置了 Qualtrics API,用于从使用他们网站上的示例脚本导出联系人。我的问题是 API 一次只能导出 100 个联系人。看来,如果我在初始 json 导出中使用 nextPage 字段中的 url 进行另一个 API 调用,我可以再获得 100 个,但这并不理想。我有时有超过 10,000 人的列表,无法手动处理。

我是一个 Python 菜鸟,想知道如何使用 nextPage URL 函数一次接收 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
    }
}

有谁知道我如何循环 nextPage 信息以获取完整的联系人列表,无论包含多少组 100?我有一些列表,其中有数十、数百和数千个联系人,并希望它适用于所有人。

感谢所有输入!谢谢!

标签: pythonapisurveyqualtricsalteryx

解决方案


使用 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'] 

推荐阅读