1 回答
TA贡献1785条经验 获得超8个赞
有几种选择:
将工作表复制到新电子表格,然后使用getDataRange()、setValues(values)和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 = 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);
}
添加回答
举报