Google apps script 使用第三张工作表中的单元格值将Google工作表复制到新工作表

Google apps script 使用第三张工作表中的单元格值将Google工作表复制到新工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我一直在浏览论坛,试图寻找正确的方法来做到这一点,但我似乎不能得到它的权利。这是我第一次使用GoogleApps脚本,所以我边走边学习 这就是我想做的 1) 我想把旧工作表的所有内容复制到新工作表中。脚本将通过引用“统计”工作表中的单元格b17来确定现有工作表名称,并将复制旧工作表,包括值格式、引用和公式。重复的工作表将从“统计”工作表的单元格c17中命名 2) 如果可能的话,我还想让旧的工作表删除所有的参考,只保留新工作表创建后的值和格式。与“复制全部”和ctrl-shift-v类似,只是一下

我一直在浏览论坛,试图寻找正确的方法来做到这一点,但我似乎不能得到它的权利。这是我第一次使用GoogleApps脚本,所以我边走边学习

这就是我想做的

1) 我想把旧工作表的所有内容复制到新工作表中。脚本将通过引用“统计”工作表中的单元格b17来确定现有工作表名称,并将复制旧工作表,包括值格式、引用和公式。重复的工作表将从“统计”工作表的单元格c17中命名

2) 如果可能的话,我还想让旧的工作表删除所有的参考,只保留新工作表创建后的值和格式。与“复制全部”和ctrl-shift-v类似,只是一下子实现了自动化

这是我目前拥有的代码,不确定是否正确

  function newSheetLast() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var first = ss.getSheetByName("Statistics").activate();
  var oldSheetName = ss.getRange('b17').getDisplayValue();
  var newSheetName = ss.getRange('c17').getDisplayValue();
  var sheet = ss.getSheetByName(oldSheetName).activate();
  var source = SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet(newSheetName);
};
当我试着做1时,我被卡住了。我尝试了copyTo,可以让工作表进行复制,但是当我复制到新工作表时,所有的格式和公式都丢失了


我甚至不知道如何尝试使用变量命名,复制工作表的方式有点混乱。 您应该能够直接复制工作表对象,或者至少能够尝试提供您尝试复制的工作表的名称,但不是,它位于电子表格级别,仅在活动工作表上工作

复制工作表包含公式和格式。 可以使用
setValues(getValues)
进行静态值覆盖

function newSheetLast() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var settings = ss.getSheetByName("Sheet1");
  var oldSheetName = settings.getRange('B17').getDisplayValue();
  var oldSheet = ss.getSheetByName(oldSheetName);
  var newSheetName = settings.getRange('C17').getDisplayValue();
  ss
      .getSheetByName(oldSheetName)
      .activate()
      .getParent()
      .duplicateActiveSheet()
      .setName(newSheetName);

  oldSheet.getDataRange().setValues(oldSheet.getDataRange().getValues());
};