You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script已定义数组访问报Cannot read property '0' of undefined错误

报错原因

Cannot read property '0' of undefined 错误触发是因为你循环的边界超出了data数组的有效索引范围,同时还存在样式取值范围错误的问题,具体问题点如下:

  • 外层行循环边界错误:你定义data时取的行数是Alast-3,数组索引从0开始,所以row的有效范围是0 ~ (Alast-4),你写的row <= Alast会导致row远大于data的长度,访问data[row]返回undefined,再访问[col]就触发报错
  • 内层列循环边界错误:你要求固定4列,数组列索引是0~3,你写的col <=4会让col取值到4,超出列的有效范围
  • 样式取值范围错误:你定义的rangito仅对应A4单个单元格,后续获取的fontFamilies、backgrounds等样式数组都只有1行1列,循环中使用fontFamilies[row][col]必然触发越界错误,应该取和data范围一致的区域来读取样式

修复后代码

function getHtmlTable(table){
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails");
  var Avals = ws.getRange("A1:A").getValues();
  var Alast = Avals.filter(String).length;
  // 提前计算data的行数,统一复用避免边界不一致
  var dataRowCount = Alast - 3;
  var data = ws.getRange(4, 1, dataRowCount, 4).getValues();

  // 取和data同范围的区域读取样式,避免样式数组越界
  var rangito = ws.getRange(4, 1, dataRowCount, 4);
  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 tableFormat = 'style="border:1px solid black;border-collapse:collapse;text-align:center" border = 1 cellpadding = 5';
  var html = ['<table '+tableFormat+'>'];

  // 修正行循环边界:仅遍历到data数组的最大索引
  for (var row= 0;row < dataRowCount;row++) {
    html.push('<tr style="height: 19px;">');
    // 修正列循环边界:仅遍历4列的有效索引0~3
    for (var col= 0 ;col < 4;col++) {
      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('');
}

内容的提问来源于stack exchange,提问作者Kristian Andreas Brinckmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:09:04