谷歌脚本在删除电子表格中的行时抛出错误

时间:2012-11-05 04:01:36

标签: google-apps-script google-sheets

这是我第一天搞乱谷歌脚本,所以请原谅我的限制。

我试图编写一个删除表单电子表格中所有行的函数,同时将标题行留在后面。

为什么这样做:

  // Loop through the data in the range and delete the rows
if (data.length > 1) {
  for (var row = 1; row < data.length; row++) {
    ws.deleteRow(row+1);
    }
    ws.deleteRow(2); 

 }

以下内容:

if (data.length > 1) {
  for (var row = 1; row < data.length; row++) {
    ws.deleteRow(row+1);
    }

  }

将第2行留在

之后

1 个答案:

答案 0 :(得分:0)

因为行索引是从1开始的(即从1开始),所以你需要改变你的for循环:

for (var row = 1; row <= data.length; row++) {

假设您有2行,当您在循环中点击第二行时(即,当行= 2时),row的值将不会小于data.length(即{ {1}});它将等于2。因此,对于data.length,测试将失败,并且第二次不会执行循环中的代码。使用<,它将通过,代码将根据需要执行。

当然,任何行数都会出现同样的模式。

编辑:其他一些问题:

由于删除会立即发生,因此删除后所有行都会移位,编号也会不同。这可以通过几种方式处理,但这里只有一个:将删除更改为从最后开始并向后工作。所以,现在我们有:

<=

此外,如果您只是尝试跳过第一行,而不是更改所使用的索引(例如for (var row = data.length; row >= 1; row--) { ),那么只需更改开始/停止循环的位置。这更简单,更容易理解。所以,循环变为:

row + 1