【问题标题】:Need Google Script to copy values from one tab to another需要 Google 脚本将值从一个选项卡复制到另一个选项卡
【发布时间】:2020-11-10 07:15:11
【问题描述】:

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

【问题讨论】:

    标签: javascript google-apps-script google-sheets google-drive-api google-sheets-api


    【解决方案1】:

    有几种选择:

    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());
    }
    
      1. 在新电子表格中插入并清空工作表,然后直接复制原始工作表中的值,也可以使用getDataRangesetValuesgetValues
    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);
    }
    

    第二种方法不太复杂,但它不会复制格式。不要使用这个是你想保留那个。

      1. 使用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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2021-03-18
      相关资源
      最近更新 更多