使用Google Apps脚本将行复制到新工作表

时间:2015-11-12 22:05:31

标签: google-apps-script

我知道这里已被多次询问和回答,但我无法使其发挥作用。我正在尝试使用Google Apps脚本在googlesheets上将行值(无公式)从一个工作表复制到另一个工作表。非常基本,但不知何故,这给了我很多时间。

我有: SourceSheet SourceWorksheet TargetSheet TargetWorksheet

我正在尝试将来自SourceWorksheet(A2:K2)的行值(无公式)复制到TargetWorksheet上的新行(在最后一次使用的行之后)。它将再次来自(A:K)但行号将不同,每次它将在最后一行之后创建一个新行。

任何帮助都会非常感激!

修改 我在下面找到了这个代码,但不知道如何修改它来读取上面提到的范围而不是源工作表中的所有行,我需要修改它以便它找到目标工作表上的最后一行然后每次创建新行写入值(因此它不会覆盖目标上的任何数据)

function myFunction() {
var source = SpreadsheetApp.openById('xxxxxx');
var sourcesheet = source.getSheetByName('sheet1');
var target = SpreadsheetApp.openById('xxxxx')
var targetsheet = target.getSheetByName('sheet1');
var targetrange = targetsheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
targetrange.setValues(rangeValues); 
}

1 个答案:

答案 0 :(得分:0)

要在表单的最后一行添加一行,请使用sheet.appendRow()方法。

在您的示例中,不需要var targetRange。您只需使用targetSheet.appendRow(rangeValues),其中rangeValues =您要复制的范围(作为数组)

function myFunction() {
var source = SpreadsheetApp.openById('xxxxxx');
var sourcesheet = source.getSheetByName('sheet1');
var target = SpreadsheetApp.openById('xxxxx')
var targetsheet = target.getSheetByName('sheet1');
var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
targetSheet.appendRow(rangeValues); 
}