使用 Google 应用程序冻结表格中的行会引发类型错误
Freezing rows in Sheets with Google Apps throws type error
我正在尝试使用 GAS 冻结每个 sheet 的第一行。它有效,冻结了所需的行,但是 returns 一个错误:
"TypeError: cannot call method setFrozenRows" of undefined (line6, file "freezeLabelRows")
根据 Google 文档,语法是正确的。
我是 运行 来自附加到 sheet 我正在开发应用程序的代码编辑器的脚本。
我尝试了一个数字 (1),其中 numRowsFr 现在是;这是我用来避免此错误的解决方法。
function rowFreeze() {
var numSheets = SpreadsheetApp.getActiveSpreadsheet().getNumSheets();
for(var i = 0; i <= numSheets; i++) {
var frSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[i];
var numRowsFr = 1;
frSheet.setFrozenRows(numRowsFr);
}
}
正如我所说,代码可以冻结每个 sheet 上的所需行,但 returns 出现错误。我想安装此应用程序的其余部分,以便为当前用户升级。
问题:
- 数组索引从 0 开始,到数组长度 -1 结束。当您使用
<=numSheets
作为循环条件时,您在数组末尾(sheets 数组)之后循环。在最后一个 sheet 之后,frsheet
将是未定义的并且 undefined
没有 setFrozenRows
方法,因为它不是 sheet 类型。
解决方案:
- 只循环到数组末尾。
片段:
i <= numSheets - 1;
或
i < numSheets;
我正在尝试使用 GAS 冻结每个 sheet 的第一行。它有效,冻结了所需的行,但是 returns 一个错误:
"TypeError: cannot call method setFrozenRows" of undefined (line6, file "freezeLabelRows")
根据 Google 文档,语法是正确的。 我是 运行 来自附加到 sheet 我正在开发应用程序的代码编辑器的脚本。 我尝试了一个数字 (1),其中 numRowsFr 现在是;这是我用来避免此错误的解决方法。
function rowFreeze() {
var numSheets = SpreadsheetApp.getActiveSpreadsheet().getNumSheets();
for(var i = 0; i <= numSheets; i++) {
var frSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[i];
var numRowsFr = 1;
frSheet.setFrozenRows(numRowsFr);
}
}
正如我所说,代码可以冻结每个 sheet 上的所需行,但 returns 出现错误。我想安装此应用程序的其余部分,以便为当前用户升级。
问题:
- 数组索引从 0 开始,到数组长度 -1 结束。当您使用
<=numSheets
作为循环条件时,您在数组末尾(sheets 数组)之后循环。在最后一个 sheet 之后,frsheet
将是未定义的并且undefined
没有setFrozenRows
方法,因为它不是 sheet 类型。
解决方案:
- 只循环到数组末尾。
片段:
i <= numSheets - 1;
或
i < numSheets;