我有一个脚本可以在满足某个条件时将一行数据(实际上只有1个单元格)从一个工作表移动到另一个工作表(在这种情况下,当Col17 =“是”时它是onEdit)。我正在选择要移动的数据:
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, 1).copyTo(target);
其中's'是活动表,'targetSheet'是目标表。
当我的目的地工作表为空时,这非常有效。
但是,我想用数据填充目标表的其他列,并且此脚本仅在A列中运行。只要我将数据添加到任何其他列,我的脚本就会将复制的值插入任何现有数据下面,无论A列中是否有数据。
E.g。我在细胞B1,A2和A3中有1,2,3,然后在细胞B1,B2,B3,B4和B5中有A,B,C,D,E。我运行我的脚本。新数据被插入A6(第一个完全空行)。我想要它去A4(Col A的第一个空行)。
答案 0 :(得分:0)
问题可能是因为您在电子表格的实际lastRow中有一些数据。并且电子表格中没有lastRow + 1行。 当您将数据插入电子表格的lastRow时,最好在lastRow之后插入一行,然后添加数据。
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
targetSheet.insertRowAfter(targetSheet.getLastRow());
s.getRange(row, 1, 1, 1).copyTo(target);
答案 1 :(得分:0)
我厌倦了getLastRow函数 - 每当我提供一个范围时,getLastRow也只返回范围中的行数,而不是包含数据的数字。
最后,我写了一个简单的循环来计算包含数据的单元格,然后使用它。可能不是最好的解决方案,但有效。
答案 2 :(得分:0)
考虑到你的数据好像是
A1 B1
A2 B2
A3 B3
B4
B5
.getLastRow()
的预期响应将为5
,因为其中包含数据的最后一行是B列中的第5行。请考虑您正在处理工作表。此功能现在无法让您查看最后一个条目在A列的具体位置。相反,您可以使用array = getRange('A:A').getValues()
,将值添加到第一个空数组索引并使用getRange('A:A').setValues(array)
更新列