需要 Google 脚本将值从一个选项卡复制到另一个选项卡

我正在为我的企业制作记分卡。员工根据工作年限享受不同的带薪休假。我需要一个脚本,仅将员工的“主”记分卡中的值复制到标题为当月的新工作表中。由于他们的 PTO 发生了变化,我需要一个脚本将该信息复制到新选项卡,以便原始选项卡不会随着工作时间的延长而继续更改 PTO 分数。


我创建了底部脚本,它可以执行所有操作,但它还复制所有使 PTO 分数随着时间的推移而变化的公式。任何帮助是极大的赞赏。


function Copymastersheettoscorecard(){

var date = Utilities.formatDate(new Date(), "GMT-22", "MM/dd/yyyy");

var ss = SpreadsheetApp.openById("1hkmRbHD24X1y8yJFdbd-BPaSyctyHGvyQBy9mi4mDc8"); 

var dss = SpreadsheetApp.openById("1ooGOPyXLYJrcN0WFH2d65hOODj_Z4DtZu47E6a04VHs");

var Newsheet = ss.getSheetByName("Master Sheet").copyTo(dss).setName(date); 

}


喵喵时光机
浏览 102回答 1
1回答

慕的地10843

有几种选择:将工作表复制到新电子表格,然后使用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);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript