Los datos:
[ ["ID","Variação","Nome Site","Obs"],//Headers [11602,185,"Camisa Teste","Teste da Observação"] //To be pasted ]Así es el destino:
| Obs. | Nombre del sitio | Variación | IDENTIFICACIÓN |
|---|
Entiendo que podría adoptar el enfoque a continuación, pero teniendo en cuenta que el conjunto de datos tiene más de 40 columnas, esto no es tan factible:
var data = sheet.getRange(1,1,2,4).getValues(); var obs = data.map(function(e){return e[0];}); var NomeSite = data.map(function(e){return e[1];}); ...¿Cómo haría para encontrar el encabezado y "pegar" los datos en ese caso?
¡Gracias!
Creo que su objetivo es el siguiente.
En este caso, ¿qué tal la siguiente modificación?
var expectedHeader = ["Obs", "Nome Site", "Variação", "ID"]; // Please set your expected header. // This sample value is from your question. var data = [ ["ID", "Variação", "Nome Site", "Obs"], [11602, 185, "Camisa Teste", "Teste da Observação"] ]; var [headers, ...rows] = data; const obj = rows.map(r => headers.reduce((o, h, j) => (o[h] = r[j], o), {})); var res = obj.map(o => expectedHeader.map(h => o[h] || "")); console.log(res) // [["Teste da Observação","Camisa Teste",185,11602]][11602, 185, "Camisa Teste", "Teste da Observação"] se reorganiza a ["Teste da Observação","Camisa Teste",185,11602] .Me gusta Tanaike, pero me da un poco de miedo la función reduce() . Así que aquí está mi variante sin reduce() :
function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var header = sheet.getDataRange().getValues()[0]; var data = [ ["ID","Variação","Nome Site","Obs"], [11602,185,"Camisa Teste","Teste da Observação"] ] var indexes = header.map(x => data[0].indexOf(x)); data = data.map(x => indexes.map(i => x.slice()[0] = x[i])); sheet.getRange(1, 1, data.length, data[0].length).setValues(data); }