Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Meu código no APP SHEETS não funciona

Bom dia! Tudo bem? Meu código consegue trazer o título apenas, o conteúdo não aparece


function carregarDadosDaAPI() {
  // URL da API
  const apiUrl = 'https://labdados.com/produtos';

  // ID da planilha
  const sheetId = '1XLSu_v8ds6oS5-9RDpS0e2YLApcFLBJXiB43XqIhSVE';

  // Obtenha a planilha pelo ID
  const sheet = SpreadsheetApp.openById(sheetId).getActiveSheet();

  // Limpe a planilha antes de carregar novos dados
  sheet.clear();

  // Defina o cabeçalho
  const header = [
    'Produto',
    'Categoria do Produto',
    'Preço',
    'Frete',
    'Data da Compra',
    'Vendedor',
    'Local da compra',
    'Avaliação da compra',
    'Tipo de pagamento',
    'Quantidade de parcelas',
    'Latitude',
    'Longitude'
  ];
  
  sheet.appendRow(header);

  // Faça a solicitação para a API
  const response = UrlFetchApp.fetch(apiUrl);
  const data = JSON.parse(response.getContentText());

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

  var planilha = SpreadsheetApp.openById('1XLSu_v8ds6oS5-9RDpS0e2YLApcFLBJXiB43XqIhSVE').getSheetByName('Dados'); // 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
  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
solução!

Oi Gabriel, tudo bem?

Primeiro, notei que você tem duas definições da função carregarDadosDaAPI(). Isso pode estar causando conflitos. Tenta usar apenas uma definição da função. Por hora testa seu código assim:

function carregarDadosDaAPI() {
  // URL da API
  const apiUrl = 'https://labdados.com/produtos';

  // ID da planilha
  const sheetId = '1XLSu_v8ds6oS5-9RDpS0e2YLApcFLBJXiB43XqIhSVE';

  // Obtenha a planilha pelo ID
  const sheet = SpreadsheetApp.openById(sheetId).getSheetByName('Dados');

  // Limpe a planilha antes de carregar novos dados
  sheet.clear();

  // Defina o cabeçalho
  const header = [
    'Produto',
    'Categoria do Produto',
    'Preço',
    'Frete',
    'Data da Compra',
    'Vendedor',
    'Local da compra',
    'Avaliação da compra',
    'Tipo de pagamento',
    'Quantidade de parcelas',
    'Latitude',
    'Longitude'
  ];
  
  sheet.appendRow(header);

  // Faça a solicitação para a API
  const response = UrlFetchApp.fetch(apiUrl);
  const data = JSON.parse(response.getContentText());

  // Mapeando as chaves do JSON para as colunas da planilha
  const headers = Object.keys(data[0]);
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);

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

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

Ah, tambem tinha outras coisas em relação ao código da aula:

Eu Corrigi a URL da API: No seu código, a URL estava com um ponto ao invés de uma barra ('https://labdados.com.produtos'), então eu corrigi para 'https://labdados.com/produtos'.

Tente executar este código e veja se ele carrega os dados.

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!