API不会返回数据Google表格/应用脚本

问题描述

我认为问题在于创建table.push var的定义,以及var dia定义的正确数据路径,var mesvar anovar horavar minuto

function CartolaPrazo() {
  var url = 'https://api.cartolafc.globo.com/mercado/status';
  var response = UrlFetchApp.fetch(url);
  var results = JSON.parse(response.getContentText());
  console.log(response)
  
  var table = [['dia','mês','ano','hora','minuto']];
  for (var i = 0; i < results.length; i++) {
    var r = results[i];
    var dia = r.fechamento.dia;
    var mes = r.fechamento.mes;
    var ano = r.fechamento.ano;
    var hora = r.fechamento.hora;
    var minuto = r.fechamento.minuto;
    table.push([dia,mes,ano,hora,minuto]);
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,22,table.length,table[0].length).setValues(table);
}

enter image description here

解决方法

您需要运行console.log(results)而不是console.log(response)

response拥有一个HTTPResponse对象,控制台将其显示为{}

,
  • 您没有一个json对象数组,而只有一个json对象。 因此,代码中的循环是不必要的,但是由于 results.lengthnull
  • 结果,您将仅获得一行数据。

假设您正在使用的url是您想要得到的,这将为您提供预期的结果:

function CartolaPrazo() {
  var url = 'https://api.cartolafc.globo.com/mercado/status';
  var response = UrlFetchApp.fetch(url);
  var results = JSON.parse(response.getContentText());
  var table = [['dia','mês','ano','hora','minuto']];
  var dia = results.fechamento.dia;
  var mes = results.fechamento.mes;
  var ano = results.fechamento.ano;
  var hora = results.fechamento.hora;
  var minuto = results.fechamento.minuto;
  table.push([dia,mes,ano,hora,minuto]);

  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,22,table.length,table[0].length).setValues(table);
}