我想知道我需要在脚本中进行哪些调整,以使结果显示在电子表格中:
TypeError:无法读取未定义的属性“ 0”(第7行)
const id = new mongoose.Schema.ObjectId()
答案 0 :(得分:2)
data
是一个数组,因此您需要先访问该元素:
var apelido = result[0].Atleta.apelido;
我认为您正在尝试将每个播放器都打印到电子表格,但是您编写的内容仅是查看其中一个播放器。请先查看API返回的数据并了解其结构。看起来像这样:
[
{
"Atleta": {
"atleta_id": 68952,
"nome": "Mário Sérgio Santos Costa",
"apelido": "Marinho",
"foto": "https://s.glbimg.com/es/sde/f/2019/05/30/cd8a7f9b0744e105efa0a0c572d37d6f_FORMATO.png",
"preco_editorial": 5
},
"escalacoes": 996124,
"clube": "SAN",
"clube_nome": "Santos",
"clube_id": 277,
"escudo_clube": "https://s.glbimg.com/es/sde/f/organizacoes/2014/04/14/santos_60x60.png",
"posicao": "Atacante",
"posicao_abreviacao": "ATA"
}
]
一旦您了解了数据,就考虑使用经过修改的脚本,该脚本使用batch operations来更快地运行。
function Cartola() {
var url = 'https://api.cartolafc.globo.com/mercado/destaques';
var response = UrlFetchApp.fetch(url);
var results = JSON.parse(response.getContentText());
var table = [['apelido','foto','clube_nome','posição']];
for (var i = 0; i < results.length; i++) {
var r = results[i];
var apelido = r.Atleta.apelido;
var foto = r.Atleta.foto;
var clube_nome = r.clube_nome;
var posição = r.posicao;
table.push([apelido, foto, clube_nome, posição]);
}
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear().getRange(1, 1, table.length, table[0].length).setValues(table);
}