En este momento, si corro for loop
{“FirstName” : “Kim”} {“LastName” : “hana”} {“Phone” : “010-1234-5648”} {“Email” : “abc@gmail.com”}Sale así. Pero el resultado que quiero es
{“FirstName” : “Kim”, “LastName” : “hana”, “Phone” : “010-1234-5648”, “Email” : “abc@gmail.com”}Quiero que salga así. ¿Qué tengo que hacer?
Este es mi código que acabo de escribir.
function testRun(){ var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var LastRow = ss.getLastRow(); var LastCol = ss.getLastColumn(); var arr = []; for(var i = 1; i<=LastCol; i ++){ var fieldName = ss.getRange(1,i).getValue(); arr.push(fieldName); } //arr = [FirstName, LastName, Phone, Email] for(var i =2;i<=LastRow;i++){ for(var j=1;j<=LastCol;j++){ var payload = Utilities.jsonStringify({ [arr[j-1]] : ss.getRange(i,j).getValue()} ); } } }payload .getValue() en un ciclo, el costo del proceso se vuelve alto. ÁrbitroCuando estos puntos se reflejan en un guión de muestra para lograr su objetivo, se convierte en lo siguiente.
Cuando se modifica su secuencia de comandos, ¿qué tal la siguiente modificación?
function testRun() { var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var LastRow = ss.getLastRow(); var LastCol = ss.getLastColumn(); var [header, ...values] = ss.getRange(1, 1, LastRow, LastCol).getValues(); var arr = []; for (var i = 0; i < LastRow - 1; i++) { var temp = {}; for (var j = 0; j < LastCol; j++) { temp[header[j]] = values[i][j]; } arr.push(temp); } console.log(JSON.stringify(arr)) } Cuando se ejecuta este script, arr es [{"FirstName":"Kim","LastName":"hana","Phone":"010-1234-5648","Email":"abc@gmail.com"}] .
Como otro enfoque, pensé que también podría usar el siguiente script de muestra.
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var [header, ...values] = ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).getValues(); var arr = values.map(r => header.reduce((o, h, j) => (o[h] = r[j], o), {})); console.log(JSON.stringify(arr))Su código crea objetos separados en cada iteración. Cree un objeto vacío para cada Persona, luego agregue las propiedades que necesita.
Esto debería verse algo como esto:
for(var i=2; i<=LastRow; i++){ var payload = {} for(var j=1; j<=LastCol; j++){ payload[arr[j-1]] = ss.getRange(i,j).getValue()}; } }