@Mogsdad在另一个问题上给了我极大的帮助:
Copy last row to another spreadsheet upon form submission
function copyLastRow(event) {
var target = SpreadsheetApp.openById('xxxxxxxxx').getSheetByName('Sheet1');
target.appendRow(event.values);
}
此脚本非常有效 - 它将原始源中最后添加的行与表单响应复制到另一个电子表格。它复制了表单中的所有值,但在原始电子表格中有响应,我有一个额外的列,它不是提交表单的一部分。我也需要从这个专栏中复制数据。 我收到了Mogsdad的回复,该回复说事件对象包含已更新的范围,因此我应该使用偏移来获取其他单元格。 我到处搜索有事件值和偏移量的任何例子,但没找到任何东西。我非常感谢任何帮助,因为我没有太多的经验。感谢。
答案 0 :(得分:2)
Event对象包含一个range
属性,告诉我们在工作表中放置了最新的表单响应。 Class Range的所有方法都可以应用于此范围。例如,.getWidth()
将返回范围宽度,为扩展要复制的范围提供了一个起点。
由于我们希望从响应中获取单元格以及工作表中的一个(或多个)附加列,因此我们可以使用offset()
方法扩展原始范围。 (请注意,offset()
是范围方法 - 它不适用于event.values
数组。)
function copyLastRow(event) {
var target = SpreadsheetApp.openById('xxxxxxxxx').getSheetByName('Sheet1');
var sourceWidth = event.range.getWidth() + additionalColumns; // define a value here
// Grab all the cells in this response, plus additionalColumns
var sourceRange = event.range.offset(0,0,1,sourceWidth);
target.appendRow(sourceRange.getValues()[0]);
}
请注意,因为我们使用事件对象中的信息,所以此函数仍然可以容忍多个表单提交。