Я считаю, что ваша цель следующая.
Из приведенной выше ситуации я подумал, что на последней странице rel="next"
может не быть включен. Используя это, я хотел бы предложить следующий модифицированный сценарий.
Измененный сценарий:
function listAllContacts() {
var options = {
'method': 'GET',
'contentType': 'application/json',
'muteHttpExceptions': false,
'headers': {
'Authorization': 'Bearer ' + SERVICE.getAccessToken()
},
};
var url = 'https://moneybird.com/api/v2/'+ADMIN_ID+'/contacts.json';
// I modified below script.
var results = [];
do {
var response = UrlFetchApp.fetch(url,options);
var data = JSON.parse(response.getContentText());
results.push(data);
var resonseCode = JSON.parse(response.getResponseCode());
console.log(resonseCode);
console.log(data);
var headers = response.getAllHeaders();
var link = headers["Link"];
var checkNextUrl = link.includes("next");
if (checkNextUrl) url = link.split(";")[0].match(/<(\w.+)>/)[1];
} while (checkNextUrl);
return results;
}
Примечание:
- К сожалению, из вашего вопроса я не смог Я не понимаю значений ответа от API. В этом случае значения ответа помещаются в массив
results
. Об этом, пожалуйста, измените его для вашей реальной ситуации. - Из официального документа, чтобы уменьшить количество l oop, использование
per_page
в URL-адресе может быть полезным. - Когда мое предположение оказалось неверным, можете ли вы предоставить заголовки ответов на последней странице? Этим я хотел бы подтвердить это.
Ссылка: