我在电子表格中有日期,客户和班次数据的列表(行A5:D34)。我想将此数据写入工作表的最后一行。不幸的是,行数是可变的。一周内,数据可能为17行;以后可能是23行。 我想通过将使用的行移动到工作表的底部来“归档”数据。
我正在寻找一种可以解决以下事实的代码(谷歌脚本)解决方案:要复制的范围始终为4列宽,但行数可变。
感谢您的所有帮助!
答案 0 :(得分:1)
这是一个非常普遍的问题,我们可能不知道或必须手动在工作表中包括总行数。我们可以使用带有最后一行值的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数组。
希望这会有所帮助:)
答案 1 :(得分:1)
我建议使用sheet.getDataRange()
来了解多少行和列包含数据。一旦知道这一点,您就可以得出最底行。
要快速查看返回的值,我建议使用sheet.getDataRange().getValues()
,它将返回一个二维数组,其中所有值都存储在工作表中。
要知道包含数据的最后一行,您可以轻松地执行以下操作:
var lastRow = sheet.getDataRange.getValues().length;
请注意,由于数组的长度从第一行的0开始计数,而当您要将值设置回工作表时,您的行计数将从1开始计数。这意味着您需要在lastRow计数上加上1。
现在您知道最后一行了,可以先进行一些清理,以使用sheet.deleteRow(lastRow+1);
删除上一个下一行
然后要添加新的底部行,您可以简单地使用append函数,在该函数中,您将具有该行所有单元格的所有值的数组传递给该数组,
sheet.appendRow(["cellInColumnA";"cellInColumnB","cellInColumnC"]);