1
resposta

[Dúvida] Erro ao carregar dados

Boa noite, estou desde ontem tentando achar esse erro....ja gerei id de novo, mas não passa desse erro. Grato

**TypeError: Cannot read properties of null (reading 'getRange') carregarDadosDaAPI @ criar_planilha.gs:21 ** nessa linha planilha.getRange(1,1,1, headers.length).setValues([headers]);

function criarPlanilha() {
 
let planilha = SpreadsheetApp.create('dados_api');
    console.log('ID da planilha: ' + planilha.getId());
    console.log('URL da planilha: ' + planilha.getUrl());
}

function carregarDadosDaAPI() {
  var url = 'https://labdados.com/produtos'; // Substitua pela URL da sua API

  var planilha = SpreadsheetApp.openById('1kCVjzpO_fy-YvDj83TwOtwx4Q_9NzmxvShfBIVhwmzE').getSheetByName('dadosapi'); // Substitua pelo nome da sua

  //var planilha = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('dados_api'); // Substitua pelo nome da sua planilha
  var resposta = UrlFetchApp.fetch(url);
  var dados = JSON.parse(resposta.getContentText());

  // Mapeando as chaves do JSON para as colunas da planilha
  // Mapeando as chaves do JSON para as colunas da planilha

  var headers = Object.keys(dados[0]);
 planilha.getRange(1,1,1, headers.length).setValues([headers]);

  var valores = dados.map(function(item) {
    return headers.map(function(chave) {
      return item[chave];
    });
  });

  // Defina o tamanho do lote para carregar os dados em partes
  var tamanhoLote = 100; // Altere para o tamanho desejado do lote
  var indice = 0;
  while (indice < valores.length) {
    var lote = valores.slice(indice, indice + tamanhoLote);
    planilha.getRange(indice + 2, 1, lote.length, headers.length).setValues(lote);
    indice += tamanhoLote;
  }
}
1 resposta

Oii, Bruno! Tudo bem?

O erro significa que o script tenta acessar uma propriedade inexistente, e esse objeto inexistente é a planilha que tem o nome dadosapi E o seu código, você está tentando acessar a planilha chamada dadosapi na function carregarDadosDaAPI(), porém você criou a planilha chamada dados_api em function criarPlanilha().

Sendo assim, recomendo que revise o código e corrija esse pequeno erro de sintaxe, deixando o nome da planilha condizente.

Exemplo de como ficaria o trecho do seu código corrigido:

function criarPlanilha() {
 
let planilha = SpreadsheetApp.create('dados_api');
    console.log('ID da planilha: ' + planilha.getId());
    console.log('URL da planilha: ' + planilha.getUrl());
}

function carregarDadosDaAPI() {
  var url = 'https://labdados.com/produtos'; // Substitua pela URL da sua API

  var planilha = SpreadsheetApp.openById('1kCVjzpO_fy-YvDj83TwOtwx4Q_9NzmxvShfBIVhwmzE').getSheetByName('dados_api'); // Substitua pelo nome da sua

//código omitido

Espero ter ajudado. Qualquer dúvida, conte conosco.

Bons estudos, Bruno!