Tengo una función javascript que debería crear una tabla con un número dinámico de filas y 4 columnas.
¿Alguien podría decirme por qué recibo un error al ejecutar este script?
var cellText = datos [fila] [columna]; -> donde aparece el error
Ya miré la matriz (datos) individualmente y está poblada.
Aquí está mi código javascript y html a continuación:
function getHtmlTable(table){ var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails") var Avals = ws.getRange("A1:A").getValues(); var Alast = Avals.filter(String).length; var data = ws.getRange(4, 1, (Alast-3), 4).getValues(); var rangito = ws.getRange("A4"); // Read table content var fontColors = rangito.getFontColors(); var backgrounds = rangito.getBackgrounds(); var fontFamilies = rangito.getFontFamilies(); var fontSizes = rangito.getFontSizes(); var fontLines = rangito.getFontLines(); var fontWeights = rangito.getFontWeights(); var horizontalAlignments = rangito.getHorizontalAlignments(); var verticalAlignments = rangito.getVerticalAlignments(); var col= 1; var row= 1; // Build HTML Table, with inline styling for each cell var tableFormat = 'style="border:1px solid black;border-collapse:collapse;text-align:center" border = 1 cellpadding = 5'; var html = ['<table '+tableFormat+'>']; // Populate rows for (row= 0;row <= Alast;row++) { html.push('<tr style="height: 19px;">'); for (col= 0 ;col <= 4;col++) { // Get formatted data var cellText = data[row][col]; var style = 'style="' + 'font-family: ' + fontFamilies[row][col]+'; ' + 'font-size: ' + fontSizes[row][col]+'; ' + 'font-weight: ' + fontWeights[row][col]+'; ' + 'background-color: ' + backgrounds[row][col]+'; ' + 'text-align: ' + horizontalAlignments[row][col]+'; ' + 'vertical-align: ' + verticalAlignments[row][col]+'; ' +'"'; html.push('<td ' + style + '>' +cellText +'</td>'); } html.push('</tr>'); } html.push('</table>'); return html.join(''); }var data = ws.getRange(4, 1, (Alast-3), 4).getValues();
getRange : getRange(fila, columna, numRows, numColumns)
Entonces, los datos son: getRange(row=4, column=1, numRows=X, numColumns=4) que hace que los datos sean una matriz 2D X por 4.
Si su bucle for está ejecutando a través de la matriz de data 2D y llamándolo, data[row][col] , donde call obtendrá hasta 4, porque la condición limitante es col <= 4 . Así que simplemente elimine el signo = para tener col < 4 o cámbielo a col <= 3 . No olvide que la mayoría de los lenguajes de programación, excepto MatLAB y unos pocos seleccionados, tienen arreglos que comienzan en 0, no en 1, por lo que el índice está basado en cero y debe llamarse con -1 desde la longitud.