function createDataset(fields, constraints, sortFields) { var dataset = DatasetBuilder.newDataset(); dataset.addColumn("DESCRICAO"); dataset.addColumn("CBO"); var servicecode = "Postprod"; var usuario = "fluig"; var senha = "Ginseng@"; var filial = "01"; var pagesize = 100; var page = 1; var total = null; try { var clientService = fluigAPI.getAuthorizeClientService(); while (true) { var endpoint = "https://rest.grupoginseng.com.br/rest/uf_sigagpe/funcoes" + "?filial=" + encodeURIComponent(filial) + "&page=" + encodeURIComponent(page) + "&pagesize=" + encodeURIComponent(pagesize); var data = { companyId: "1", serviceCode: servicecode, endpoint: endpoint, method: "get", timeoutService: "60000", params: {}, options: { encoding: "UTF-8", useBasicAuth: true, username: usuario, password: senha } }; var vo = clientService.invoke(JSON.stringify(data)); var retorno = vo.getResult(); if (!retorno) break; var obj = JSON.parse(retorno); // se a API usa "sucesso" if (obj.sucesso !== true) { dataset.addRow(["(API retornou sucesso=false)", ""]); break; } // sua lista vem em "funcoes" (não "items") var funcoes = obj.funcoes; if (!funcoes || funcoes.length === 0) break; // guarda total se vier if (total === null && obj.total != null) total = Number(obj.total); for (var i = 0; i < funcoes.length; i++) { dataset.addRow([ funcoes[i].RJ_DESC || "", funcoes[i].RJ_CODCBO || "" // ou RJ_CBO se for o campo desejado ]); } // condição de parada segura if (funcoes.length < pagesize) break; // se quiser parar com base no total: if (total !== null && page * pagesize >= total) break; page++; } } catch (e) { dataset = DatasetBuilder.newDataset(); dataset.addColumn("ERRO"); dataset.addRow([String(e)]); } return dataset; }