首页 > 解决方案 > Google Script - 无法将超过 100 个元素放入数组

问题描述


我目前对 Google Script 有疑问。我尝试从我们的票务系统发出一个 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);
}

标签: google-apps-scripthttpresponsezendeskzendesk-api

解决方案


Zendesk API 文档说:搜索 API 返回 2,000 个页面的限制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


推荐阅读