Apps Script: Duplicate Spreadsheet to Specific Google Drive Directory

Need help with Google Apps Script

I’m trying to figure out how to copy a spreadsheet to a particular folder in Google Drive using Apps Script. Here’s what I want to do:

  1. Make a new spreadsheet called ‘Spreadsheet_B’ in a folder named ‘myfolder’
  2. Copy the contents of ‘Spreadsheet_A’ into this new spreadsheet

I’ve been searching for a while but can’t seem to find the right solution. Has anyone done something like this before? Any tips or code examples would be super helpful!

function copySpreadsheet() {
  var targetFolder = DriveApp.getFolderById('folderIdHere');
  var newSpreadsheet = SpreadsheetApp.create('Spreadsheet_B');
  // Not sure how to move the new spreadsheet to the target folder
  // or how to copy contents from another spreadsheet
}

Thanks in advance for any help!

I’ve implemented something similar in one of my projects. Here’s how you can achieve this:

Use DriveApp.getFolderById() to get the target folder, then create the new spreadsheet with SpreadsheetApp.create(). Move the new spreadsheet to the target folder using targetFolder.addFile() and DriveApp.getFileById(), and finally open the source spreadsheet to copy its contents.

Below is an example:

function copySpreadsheet() {
  var targetFolder = DriveApp.getFolderById('folderIdHere');
  var newSpreadsheet = SpreadsheetApp.create('Spreadsheet_B');
  var newFile = DriveApp.getFileById(newSpreadsheet.getId());
  targetFolder.addFile(newFile);
  DriveApp.getRootFolder().removeFile(newFile);

  var sourceSpreadsheet = SpreadsheetApp.openById('sourceSpreadsheetIdHere');
  var sourceSheet = sourceSpreadsheet.getActiveSheet();
  var targetSheet = newSpreadsheet.getActiveSheet();
  sourceSheet.copyTo(newSpreadsheet);
}

Replace ‘folderIdHere’ and ‘sourceSpreadsheetIdHere’ with your actual folder and spreadsheet IDs. This solution creates a new spreadsheet in your specified folder and copies the content from the source spreadsheet.

hey, i’ve done this before! here’s a quick way:

function copySheet() {
var folder = DriveApp.getFolderById(‘yourFolderId’);
var newSheet = SpreadsheetApp.create(‘Spreadsheet_B’);
folder.addFile(DriveApp.getFileById(newSheet.getId()));

var sourceSheet = SpreadsheetApp.openById(‘sourceId’).getActiveSheet();
sourceSheet.copyTo(newSheet);
}

just swap the IDs and ur good to go! lmk if u need anything else

I’ve dealt with similar tasks before, and here’s what worked for me:

First, get the target folder using DriveApp.getFolderById(). Then, create your new spreadsheet with SpreadsheetApp.create(). To move it to the right folder, use the addFile() method of the folder object.

For copying content, you can use the getRange() and setValues() methods. Here’s a simplified version:

function copySpreadsheet() {
var targetFolder = DriveApp.getFolderById(‘your_folder_id’);
var newSpreadsheet = SpreadsheetApp.create(‘Spreadsheet_B’);
targetFolder.addFile(DriveApp.getFileById(newSpreadsheet.getId()));

var sourceSpreadsheet = SpreadsheetApp.openById(‘source_spreadsheet_id’);
var sourceSheet = sourceSpreadsheet.getActiveSheet();
var targetSheet = newSpreadsheet.getActiveSheet();

var sourceRange = sourceSheet.getDataRange();
var sourceValues = sourceRange.getValues();
targetSheet.getRange(1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
}

This should do what you need. Just replace ‘your_folder_id’ and ‘source_spreadsheet_id’ with your actual IDs. Hope this helps!