谷歌脚本编辑器:获取LastRow值并粘贴(仅值)到倒数第二行



我尝试了以下脚本的10多种变体,试图实现我认为简单的功能,即复制谷歌工作表最后一行的值并将其粘贴到倒数第二行。包含数据的最后一行和倒数第二行总是在变化,所以我不能为这两行指定静态范围。以下是我写过的两个最接近的版本:

function Export() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var database = SpreadsheetApp.openById("xxx");
var source = ss.getSheetByName('aaa');
var last_row = source.getLastRow();
var second_last_row = (last_row-1);
var copyData = source.getRange(second_last_row).setValues(last_row);
}

这里的错误是";未找到范围";"var CopyData"行。如果我把这行改写如下:var copyData=source.getRange.second_last_row.setValues(last_row(;我得到一个错误,上面写着";无法读取未定义的"的属性"setValues";。

我也试过这个版本:

function copyv() {
var target = SpreadsheetApp.openById("xxx");
var target_sheet = target.getSheetByName("aaa");
var last_row = target_sheet.getLastRow();
let source = last_row
let destination = last_row-1
source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
} 

在这个例子中,我得到了一个错误;source.copyTo不是函数";尽管这适用于我编写的其他函数,其中范围是静态的(例如:A5:BC,而不是"last_row"(。

我们非常感谢您的帮助。

您必须获取值,而不仅仅是行:

function Export() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var database = SpreadsheetApp.openById("xxx");
var source = ss.getSheetByName('aaa');
var last_row = source.getLastRow();
var last_column = source.getLastColumn();
var data = source.getRange(last_row,1,1,last_column).getValues();//gets actual data
var destination_range = source.getRange(last_row-1,1,1,last_column);//creates target range
source.getRange(data).setValues(destination_range);
}

在您的版本中,您试图将整数复制到整数,而不是将数组复制到范围。

最新更新