有几种选择:
function Copymastersheettoscorecard(){
var date = Utilities.formatDate(new Date(), "GMT-22", "MM/dd/yyyy");
var ss = SpreadsheetApp.openById("SS_ID_1");
var dss = SpreadsheetApp.openById("SS_ID_2");
var Newsheet = ss.getSheetByName("Master Sheet").copyTo(dss).setName(date);
var destRange = Newsheet.getDataRange();
destRange.setValues(destRange.getValues());
}
-
- 在新电子表格中插入并清空工作表,然后直接复制原始工作表中的值,也可以使用
getDataRange、setValues 和getValues:
function Copymastersheettoscorecard(){
var date = Utilities.formatDate(new Date(), "GMT-22", "MM/dd/yyyy");
var ss = SpreadsheetApp.openById("SS_ID_1");
var dss = SpreadsheetApp.openById("SS_ID_2");
var Newsheet = dss.insertSheet(date);
var sourceValues = ss.getSheetByName("Master Sheet").getDataRange().getValues();
Newsheet.getRange(1,1,sourceValues.length,sourceValues[0].length).setValues(sourceValues);
}
第二种方法不太复杂,但它不会复制格式。不要使用这个是你想保留那个。
-
- 使用Range.copyTo,它允许将选项设置为仅粘贴值(
SpreadsheetApp.CopyPasteType.PASTE_VALUES)。但是,这种方式需要创建和删除一个临时工作表(因为它不能用于在不同电子表格之间复制范围),并且它也不会保留格式:
function Copymastersheettoscorecard(){
var date = Utilities.formatDate(new Date(), "GMT-22", "MM/dd/yyyy");
var ss = SpreadsheetApp.openById("SS_ID_1");
var dss = SpreadsheetApp.openById("SS_ID_2");
var sourceRange = ss.getSheetByName("Master Sheet").getDataRange();
var Tempsheet = ss.insertSheet("TEMPORARY");
sourceRange.copyTo(Tempsheet.getRange("A1"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
Tempsheet.copyTo(dss).setName(date);
ss.deleteSheet(Tempsheet);
}