我目前在使用Google脚本时遇到问题。我尝试从售票系统发出HTTP GET请求,该请求会提供所有打开的票。
这实际上没有任何问题,但是问题是,我从来没有得到超过100个元素的响应(即使有大约150张打开的票证),因此数组不能包含100个以上的元素。有什么理由吗?
有人知道解决方案吗?
代码段:
function setOpenTickets() {
const subdomain = getSubdomain();
const username = getUsername();
const token = getToken();
const searchUrlOpen = "https://" + subdomain + ".zendesk.com/api/v2/search.json?" +
"query=type:ticket status:open order_by:created sort:asc";
const authToken = username + "/token:" + token;
const encodedAuthToken = Utilities.base64Encode(authToken);
const options = {
"method" : "get",
"headers" : {
"Content-type":"application/xml",
"Authorization": "Basic " + encodedAuthToken
}
};
const jsonResponseOpen = fetchJson(searchUrlOpen, options);
const openTickets = jsonResponseOpen.results.length;
Logger.log("Open Tickets: " + openTickets);
getConfigurationSheet().getRange("B16").setValue(openTickets);
}
答案 0 :(得分:2)
Zendesk API文档说:Search API最多返回2000个页面,其中包含100 results per page
请查询所有页面以获取所有数据。
类似这样的事情:(请检查响应状态并在返回422或空白页时中断循环)
var page = 1;
response = fetchJson(searchUrlOpen+"&page="+page++, options);
while (response.status_code != 422) {
processResponse(response);
response = fetchJson(searchUrlOpen+"&page="+page++, options);
}
参考:https://developer.zendesk.com/rest_api/docs/core/search#results-limit