这是我第一天搞乱谷歌脚本,所以请原谅我的限制。
我试图编写一个删除表单电子表格中所有行的函数,同时将标题行留在后面。
为什么这样做:
// 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行留在
之后答案 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