我在电子表格中有一个日期,客户和班次数据列表(行A5:D34) . 我想将此数据写入工作表的最后一行 . 不幸的是,行数是可变的 . 在一周内,数据可能是17行;之后,它可能是23行 . 我想通过将使用过的行移动到工作表的底部来“存档”数据 .
我正在寻找一个代码(谷歌脚本)解决方案,可以解决要复制的范围总是4列宽,但行数可变的事实 .
感谢你的帮助!
这是一个非常常见的问题,我们可能不知道或不必手动包含工作表中的总行数 . 我们可以使用带有最后一行值的getRange()或getDataRange()来提取范围 .
getRange(start_row,start_column,number_of_rows,number_of_columns);
要使用从A1开始的上述语法中的最后一行,只需更改如下参数即可 .
var range = getRange(1,1,sheet.getLastRow(),sheet.getLastColumn());
第二个选项是使用getDataRange()
var range = sheet.getDataRange();
PS:请注意,范围是2D阵列 .
希望这可以帮助 :)
我建议使用 sheet.getDataRange() 来知道有多少行和列包含数据 . 一旦你知道了这一点,你就可以得到最后一行 .
sheet.getDataRange()
要快速浏览返回的值,我建议使用 sheet.getDataRange().getValues() ,它将返回一个二维数组,其中包含存储在工作表中的所有值 .
sheet.getDataRange().getValues()
要了解包含数据的最后一行,您可以轻松执行以下操作:
var lastRow = sheet.getDataRange.getValues().length;
请注意,由于数组的长度从第一行的0开始计数,而当您想要将值设置回工作表时,行数将从1开始 . 这意味着您需要在lastRow计数中加1 .
既然您知道最后一行,您可以先进行一些清理,然后使用 sheet.deleteRow(lastRow+1); 删除前一行底行
sheet.deleteRow(lastRow+1);
然后添加一个新的底行你可以简单地使用append函数,你传递一个数组,其中包含行的所有单元格的所有值,如下所示:
sheet.appendRow(["cellInColumnA";"cellInColumnB","cellInColumnC"]);
2 回答
这是一个非常常见的问题,我们可能不知道或不必手动包含工作表中的总行数 . 我们可以使用带有最后一行值的getRange()或getDataRange()来提取范围 .
要使用从A1开始的上述语法中的最后一行,只需更改如下参数即可 .
第二个选项是使用getDataRange()
PS:请注意,范围是2D阵列 .
希望这可以帮助 :)
我建议使用
sheet.getDataRange()
来知道有多少行和列包含数据 . 一旦你知道了这一点,你就可以得到最后一行 .要快速浏览返回的值,我建议使用
sheet.getDataRange().getValues()
,它将返回一个二维数组,其中包含存储在工作表中的所有值 .要了解包含数据的最后一行,您可以轻松执行以下操作:
请注意,由于数组的长度从第一行的0开始计数,而当您想要将值设置回工作表时,行数将从1开始 . 这意味着您需要在lastRow计数中加1 .
既然您知道最后一行,您可以先进行一些清理,然后使用
sheet.deleteRow(lastRow+1);
删除前一行底行然后添加一个新的底行你可以简单地使用append函数,你传递一个数组,其中包含行的所有单元格的所有值,如下所示: