Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

158
Visualizações
Divida múltiples cadenas JSON en una tabla estructurada usando Google App Script

Estoy tratando de dividir un conjunto de datos con una ID y una cadena JSON en una tabla estructurada.

La parte difícil es que necesito que sea dinámico, la cadena JSON varía con frecuencia y quiero que los encabezados estén determinados por los valores únicos en la columna de entrada en ese momento. Necesito la secuencia de comandos para poder crear encabezados si la cadena cambia sin necesidad de recodificar la secuencia de comandos.

Tenemos alrededor de 150 cadenas JSON diferentes en las que esperamos usar este script, sin recodificarlo para cada una. Cada cadena tiene muchos puntos de datos.

Tengo un script funcionando, pero los divide uno por uno, necesito construir algo que funcione a granel de una sola vez, recorriendo todas las salidas en B y creando una columna para cada campo único en todas las cadenas, luego llenándolas.

El script funciona si pego la información adicional directamente; sin embargo, tengo problemas para leer la hoja

 var inputsheet = SpreadsheetApp.getActive().getSheetByName("Input"); var outputsheet = SpreadsheetApp.getActive().getSheetByName("Current Output"); var additionalinfo = inputsheet.getRange(1,1).getValue() Logger.log(additionalinfo) var rows = [], data; for (i = 0; i < additionalinfo.length; i++) { for (j in additionalinfo[i]) { dataq = additionalinfo[i][j]; Logger.log(dataq); rows.push([j, dataq]); } dataRange = outputsheet.getRange(1, 1, rows.length, 2); dataRange.setValues(rows); } }

Aquí hay un enlace a los datos de muestra. Tenga en cuenta que en las muestras 1 y 2 hay diferentes encabezados, necesitamos el script para identificar esto y crear encabezados para ambos.

https://docs.google.com/spreadsheets/d/1BMiVuAgDbibLw6yUG3IZ9iw4MZTaVVegkw_k3ItQ4mU/edit#gid=0

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Pruebe este script que produce encabezados dinámicos basados en el json que se ha leído. Recopila todos los datos json, obtiene sus claves y elimina los duplicados.

Guion:

 function JSON_SPLITTER() { var spreadsheet = SpreadsheetApp.getActive(); var inputsheet = spreadsheet .getSheetByName("Input"); var outputsheet = spreadsheet .getSheetByName("Current Output"); var additionalinfo = inputsheet.getDataRange().getValues(); var keys = []; // prepare the additionalInfo data to be parsed for later var data = additionalinfo.slice(1).map(row => { // collect all keys in an array if (JSON.parse(row[1]).additionalInfo) { keys.push(Object.keys(JSON.parse(row[1]).additionalInfo)); return JSON.parse(row[1]).additionalInfo; } else { keys.push(Object.keys(JSON.parse(row[1]))); return JSON.parse(row[1]); } }); // unique values of keys, modified to form header var headers = [...new Set(keys.flat())] // Add A1 as the header for the ids headers.unshift(additionalinfo[0][0]); // set A1 and keys as headers var output = [headers] // build output array additionalinfo.slice(1).forEach((row, index) => { var outputRow = []; headers.forEach(column => { if(column == 'Contract Oid') outputRow.push(row[0]); else outputRow.push(data[index][column]); }); output.push(outputRow) }); outputsheet.getRange(1, 1, output.length, output[0].length).setValues(output); }

Producción:

producción

Actualizar:

  • Script modificado para objetos clave sin información additionalInfo .
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda