javascript - 类型错误 : Cannot read property '0' of undefined for an array already defined in google scripts

标签 javascript html css google-apps-script

我有一个 JavaScript 函数,它应该创建一个具有动态行数和 4 列的表格

谁能告诉我为什么运行此脚本时出现错误?

var cellText = 数据[行][列]; -> 错误出现的位置

我已经单独查看了数组(数据)并且它已填充。

下面是我的 javascript 和 html 代码:

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(行, 列, 行数, 列数)

  • row:范围的起始行索引;行索引从 1 开始。
  • column:范围的起始列索引;列索引从 1 开始。
  • numRows:要返回的行数。
  • numColumns:要返回的列数。

所以数据是:getRange(row=4, column=1, numRows=X, numColumns=4)这使得数据成为一个 X x 4 2D 数组。

如果您的for您正在运行的 2D 循环 data数组,并调用它,data[row][col] ,其中 call 将达到 4,因为限制条件是 col <= 4 。所以只需删除 =签名有col < 4或者将其更改为 col <= 3 。不要忘记,大多数编程语言(除了 MatLAB 和少数选定的几种语言)的数组都从 0 开始,而不是 1,因此索引是从零开始的,应该用 -1 调用。从长度来看。

关于javascript - 类型错误 : Cannot read property '0' of undefined for an array already defined in google scripts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69486500/

相关文章:

css - 选择/选项中的错误光标,IE

javascript - Javascript 中的函数可以有多长?

javascript - 网页动画背后的技术是什么?

javascript - 使用 jquery 和 javascript 进行测验

php - htmlpurifier 允许特定标签的方案

javascript - 在左侧边栏中,我只想将打开的最近点击的模块作为事件模块的一部分

html - Bootstrap 右栏动态高度

javascript - 在单独的 iframe 中从 .php 刷新 iframe

javascript - 如何修复这个 JavaScript slider 代码?

javascript - 如何使用 JavaScript 在 div 中加载 HTML 页面?