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

Javascript 需要Google脚本将值从一个选项卡复制到另一个选项卡,javascript,google-apps-script,google-sheets,google-drive-api,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Google Drive Api,Google Sheets Api,我正在为我的企业制作记分卡。员工根据其工作年限获得不同的带薪休假。我需要一个脚本,该脚本只将员工的“主”记分卡中的值复制到名为“当前月份”的新工作表中。由于他们的PTO发生变化,我需要一个脚本,将该信息复制到一个新选项卡上,以便原始选项卡不会随着雇佣期的延长而继续改变PTO分数 我已经创建了底部脚本,除了它还复制了所有公式,使PTO分数随着时间的推移而变化之外,它做了所有事情。非常感谢您的帮助 function Copymastersheettoscorecard(){ var date = U

我正在为我的企业制作记分卡。员工根据其工作年限获得不同的带薪休假。我需要一个脚本,该脚本只将员工的“主”记分卡中的值复制到名为“当前月份”的新工作表中。由于他们的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); 
}

有几种选择:

  • 将工作表复制到新的电子表格中,然后使用和的组合删除公式:
  • 在新电子表格中插入并清空工作表,并直接从原始工作表中复制值,也可以使用
    getDataRange
    setValues
    getValues
第二种方法不太复杂,但它不会复制格式。不要用这个,因为你想保留它

  • 使用,该选项允许设置仅粘贴值的选项(
    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 Newsheet = ss.getSheetByName("Master Sheet").copyTo(dss).setName(date);
  var destRange = Newsheet.getDataRange();
  destRange.setValues(destRange.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);
}
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);
}