Reputation: 2137
When trying to copy the API data to the spreadsheet returns blank, I would like to know where I am failing in the script (I believe it is something simple but I am letting go without seeing it)
function CartolaMarket() {
var url = 'https://api.cartolafc.globo.com/atletas/mercado';
var response = UrlFetchApp.fetch(url);
var results = JSON.parse(response.getContentText());
var table = [['apelido','clube_id','posicao_id','status_id','media_num']];
for (var i = 0; i < results.length; i++) {
var r = results[i];
var apelido = r.atletas.apelido;
var clube_id = r.atletas.clube_id;
var posicao_id = r.atletas.posicao_id;
var status_id = r.atletas.status_id;
var media_num = r.atletas.media_num;
table.push([apelido,clube_id,posicao_id,status_id,media_num]);
}
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1, table.length, table[0].length).setValues(table);
}
Return Data API:
Link to Spreadsheet:
https://docs.google.com/spreadsheets/d/1R9Naeuvl7ZequmyNwMOR7z_qKWfynxFa7vb6dq9RysU/edit?usp=sharing
Data I intend to collect:
apelido
clube_id
posicao_id
status_id
media_num
API Link:
https://api.cartolafc.globo.com/atletas/mercado
Upvotes: 1
Views: 113
Reputation: 14537
It's not quite an answer, just a hint how you could fix it (I hope).
Try this:
var r = results[i].atletas[0];
var apelido = r.apelido;
var clube_id = r.clube_id;
var posicao_id = r.posicao_id;
var status_id = r.status_id;
var media_num = r.media_num;
or this:
var r = results[i];
var apelido = r.atletas[0].apelido;
var clube_id = r.atletas[0].clube_id;
var posicao_id = r.atletas[0].posicao_id;
var status_id = r.atletas[0].status_id;
var media_num = r.atletas[0].media_num;
Instead of this:
var r = results[i];
var apelido = r.atletas.apelido;
var clube_id = r.atletas.clube_id;
var posicao_id = r.atletas.posicao_id;
var status_id = r.atletas.status_id;
var media_num = r.atletas.media_num;
Since, as you were told, the atletas
is an array. You must iterate though it, or take its first element atletas[0]
, if it's enough.
Try this:
function CartolaMarket() {
var url = 'https://api.cartolafc.globo.com/atletas/mercado';
var response = UrlFetchApp.fetch(url);
var results = JSON.parse(response.getContentText());
// loop trough 'atletas', not through 'results'
var atletas = results.atletas;
var table = [['apelido','clube_id','posicao_id','status_id','media_num']];
for (var i = 0; i < atletas.length; i++) {
var a = atletas[i];
var apelido = a.apelido;
var clube_id = a.clube_id;
var posicao_id = a.posicao_id;
var status_id = a.status_id;
var media_num = a.media_num;
table.push([apelido,clube_id,posicao_id,status_id,media_num]);
}
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1, table.length, table[0].length).setValues(table);
}
But I haven't tested this. Looks like it works.
Upvotes: 2