'Copy a sheet from a SpreadSheet file to a Google Drive folder

I learn how to use Google Script. I'm trying to make a copy of a sheet form a spreadsheet into a Google Drive folder. That was possible manualy but i need to do that with Google Script.

I try :

var desFolder = DriveApp.getFolderById(folderID);
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
DriveApp.getFileById(spreadSheet.getId()).makeCopy("desired file name", destFolder);

But it copy all the spreadSheet, i need to copy one sheet not the entire SpreadSheet. How can i do that ?



Solution 1:[1]

In your script, how about the following modification?

Modified script 1:

function sample1() {
  var sheetName = "Sheet1"; // Please set the sheet name you want to copy.
  var folderID = "###"; // Please set the folder ID.

  var destFolder = DriveApp.getFolderById(folderID);
  var srcSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var file = DriveApp.getFileById(srcSpreadSheet.getId()).makeCopy("desired file name", destFolder);
  var dstSpreadsheet = SpreadsheetApp.open(file);
  dstSpreadsheet.getSheets().forEach(s => {
    if (s.getSheetName() != sheetName) {
      dstSpreadsheet.deleteSheet(s);
    }
  });
}
  • In this modification, the Spreadsheet is copied to the destination folder. And, the sheets except for a sheet you want to use are deleted.

Modified script 2:

function sample1() {
  var sheetName = "Sheet1"; // Please set the sheet name you want to copy.
  var folderID = "###"; // Please set the folder ID.

  var destFolder = DriveApp.getFolderById(folderID);
  var srcSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = srcSpreadSheet.getSheetByName(sheetName);
  var dstSpreadsheet = SpreadsheetApp.create("desired file name");
  var dstSheet = srcSheet.copyTo(dstSpreadsheet);
  dstSpreadsheet.deleteSheet(dstSpreadsheet.getSheets()[0]);
  dstSheet.setName(sheetName);
  DriveApp.getFileById(dstSpreadsheet.getId()).moveTo(destFolder);
}
  • In this modification, a new Spreadsheet is created and it is moved to the destination folder. And, copy the sheet you want to use to the created Spreadsheet. And, the default sheet is deleted.

  • I noticed that when I saw the 2nd sample script and, when the value of sheetName is the same as the default sheet name, an error occurs. So, I modified it.

References:

Solution 2:[2]

you'll need to create an empty spreadsheet and copy specific sheet using your copyTo method.

Something like:

var newSpreadsheet = SpreadsheetApp.create("desired file name")
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadSheet.getSheetByName("specific_sheet_name")
sheet.copyTo(newSpreadsheet)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 ?????? ?????