Estoy trabajando con tablas de Excel en JS y tratando de encontrar una manera de establecer/manipular el orden de las columnas antes de pegar datos en la tabla y después. Hay una línea con .map que parece ser clave, pero parece que no puedo usar/pasar variables dentro de ella.
¿Cómo puedo acceder a HeaderRowArr[1] dentro del map ? Al final, querré iterar sobre todo el HeaderRowArr y mapear cada elemento, pero siento que si puedo hacer esta primera parte, espero que sea más claro.
Esta línea es la línea en la que estoy trabajando:
var newData = transactions.map(item => [item.MERCHANT, item.HeaderRowArr[1], item.CATEGORY, item.AMOUNT]);
Pero recibo el error: "Unable to get property '1' of undefined or null reference"
Fragmento completo:
export async function helloworld(event) { try { await Excel.run(async (context) => { //Start Func var transactions = [ { "BoxLabel": "AB12345678R001-005", "MERCHANT": "The Phone Company", "CATEGORY": "Communications", "AMOUNT": "120" }, { "BoxLabel": "ZY12345678R001-005", "MERCHANT": "Southridge Video", "CATEGORY": "Entertainment", "AMOUNT": "40" } ]; var WSNameStr = "Workorder_Samples"; var ws = await Get_WorkSheet(context, false, WSNameStr) var TBLNameStr = "ExpensesTable"; var rng = ws.getRangeByIndexes(0, 0, 1, Object.keys(transactions[0]).length) var expensesTable = await Get_Table(context, false, ws, TBLNameStr, rng) //expensesTable.getHeaderRowRange().values = [Object.keys(transactions[0])]; var HeaderRowArr = ["MERCHANT", "BoxLabel", "CATEGORY", "AMOUNT"] expensesTable.getHeaderRowRange().values = [HeaderRowArr]; //var newData = transactions.map(item => [item.CATEGORY, item.BoxLabel, item.MERCHANT, item.AMOUNT]); //This controls body output order, doesn't track headers order console.log(HeaderRowArr[1]) var newData = transactions.map(item => [item.MERCHANT, item.BoxLabel, item.CATEGORY, item.AMOUNT]); //var newData = transactions.map(item => [item.MERCHANT, item.HeaderRowArr[1], item.CATEGORY, item.AMOUNT]); expensesTable.rows.add(null, newData); ws.activate(); //End Func await context.sync(); }); } catch (error) { console.error(error); } event.completed(); }