Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
TypeError: no se puede leer la propiedad '0' de indefinido para una matriz ya definida en los scripts de Google

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(''); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

var data = ws.getRange(4, 1, (Alast-3), 4).getValues();

getRange : getRange(fila, columna, numRows, numColumns)

  • fila: el índice de fila inicial del rango; la indexación de filas comienza con 1.
  • columna: el índice de la columna inicial del rango; la indexación de columnas comienza con 1.
  • numRows: El número de filas a devolver.
  • numColumns: El número de columnas a devolver.

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.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda