我有一个 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/