Я пытаюсь выполнить вызов API, у которого есть ограничение на 50 записей на вызов, ответ JSON дает мне «объекты» и «total_objects».
У меня проблема с кодом что мне удалось собрать с помощью, вывод действительно увеличивается с 50-й записи до 95-й записи, после чего он возвращается к печати с 45-й записи и зацикливается с тем же набором.
проблема: застрял в al oop, где приращение составляет одну запись за раз и повторение 49 старых записей
var client_id = 'xxxx';
var client_secret = 'xxx';
var email = 'xxx';
var password = 'abc';
var device = '1';
var app_version = '1';
var Token = 'abcde';
// call the API to get data for your list
function AP_Hyd() {
// URL and params for the API
var root = 'https://abcdef:443//v2/';
var endpoint = 'ghij/3241/objects?search=rtewq&limit=50&offset=';
var offset = '0'
// parameters for url fetch
var params = {
'method': 'GET',
'muteHttpExceptions': true,
'headers': {
'Authorization': 'Bearer ' + Token
}
};
// call the API for first offset
var json = getAssetData(root,endpoint, offset, params);
var totalObjects = json.objects;
//Adding data to ActiveGoogleSheet
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear()
//Adding Column Headings
var headerRow = ['erwf', 'gtre', 'poi', 'hgf', 'lkj', 'zyx'];
sheet.appendRow(headerRow);
//print first batch
printRows(totalObjects,sheet);
//check for any further data available
if (totalObjects) {
let totalPages = json.totals.objects;
//get total number of pages to be retrieved
var pageCount = parseInt(totalPages / 50)
//check for decimal
//if decimal is found increase the value of pageCount by 1
if(totalPages%50 !=0){
pageCount++;
}
Logger.log("pageCount:::" + pageCount +" for total objects:: " + totalPages);
for (i = 1; i < pageCount; i++) {
//invoke again and lets say the response is added in response
// call the API with incremented offset
var pageResponse = getAssetData(root,endpoint, i, params);
var jsonObjects = pageResponse.objects;
//print the rows
printRows(jsonObjects,sheet);
}
}
}
function getAssetData(root,endpoint,offset, params){
var response = UrlFetchApp.fetch(root + endpoint + offset, params);
var content = response.getContentText()
//return the parsed content
//TODO: add null check
return JSON.parse(content)
}
function printRows(jsonData, sheet) {
if (jsonData) {
for (var i = 0; i < jsonData.length; i++) {
var fieldObj = jsonData[i];
;
Logger.log(fieldObj)
// print out all the Columns
sheet.appendRow(row);
}
}
}