使用 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;