将特定工作表的副本创建到单独的电子表格中

时间:2019-10-17 11:55:43

标签: google-apps-script google-sheets

我在整个互联网上进行了搜索,似乎无法提出解决方案。现在,我只是使用脚本来制作整个电子表格的副本并移动电子表格。该电子表格大约有10张纸,但我不想复制整个电子表格,我只想复制三张特定的纸,理想情况下,每张纸都是自己的电子表格。

我将需要设置一个触发器来每天11:00 AM运行此脚本。因此,每天我都会备份这三张纸。

这是我当前正在使用的代码。它只是复制整个电子表格。我看不到如何实现上面提到的目标。这样的事情可能吗?

我研究了试图将整个电子表格重复三次,然后只是从重复中删除不需要的工作表。但是我似乎无法弄清楚如何从重复的文件中删除工作表。

任何帮助将不胜感激。

谢谢

function duplicateSheet(parameters) {
  var formattedDate = Utilities.formatDate(new Date(), "GMT-5", "yyyy-MM-dd");
  var name = formattedDate + " Daily Manager's Conference Call";
  var destination = DriveApp.getFolderById("Folder ID");
  var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId())
  file.makeCopy(name, destination);
}

2 个答案:

答案 0 :(得分:0)

您可以使用copyTo()将单个工作表复制到另一个电子表格,如下所示:

var sheetToCopy = oldSpreadsheet.getSheetByName("your_sheet_name");
var newSpreadsheet = SpreadsheetApp.create("new_spreadsheet");
sheetToCopy.copyTo(newSpreadsheet);

如果要将电子表格复制到某个文件夹,则可以使用:

var file = DriveApp.getFileById(newSpreadsheet.getId());
DriveApp.getFolderById('your_folder_id').addFile(file);

答案 1 :(得分:0)

将多个工作表复制到单个电子表格

要使用此功能,只需为它提供要复制到新电子表格的文件名数组。我可以更改输入参数以满足您的需求。只要让我知道你想要什么。

function copySheetsToSpreadsheets(sheetNameArray) {
  var sheetNameArray=sheetNameArray||["Sheet1","Sheet2","Sheet3"];
  var ss=SpreadsheetApp.getActive();
  var des=DriveApp.getFolderById("Destination Folder Id");
  for(var i=0;i<sheetNameArray.length;i++) {
    var ssFileName=Utilities.formatString('DailyManagersConferenceCall-%s-%s',sheetNameArray[i],Utilities.formatDate(new Date(),"GMT-5","yyyy-MM-dd"));
    var file=SpreadsheetApp.create(ssFileName);
    var f=DriveApp.getFileById(file.getId());
    var fi=f.makeCopy(f.getName(), des);
    var newss=SpreadsheetApp.openById(fi.getId());
    var sh=ss.getSheetByName(sheetNameArray[i])
    var newsh=sh.copyTo(newss);
    newss.deleteSheet(newss.getSheets()[0]);
    newsh.setName(sheetNameArray[i]);
  }
}