3

Hello, friends! To create a new spreadsheet in specific folder I use following script

function create_ss_in_folder(folder, name) {
  var ss = SpreadsheetApp.create(name);
  var id = ss.getId();
  var file = DriveApp.getFileById(id);
  var new_file = file.makeCopy(name, get_folder_by_name(folder));
  id = new_file.getId();
  DriveApp.removeFile(file);
  return id;
}

It take over 8.4 second to run, mainly due to makeCopy call (6.672 sec). So, if there a faster way to create google spreadsheet in specific folder?

Rubén
  • 34,714
  • 9
  • 70
  • 166
Karen Fisher
  • 747
  • 1
  • 8
  • 25
  • This shows how to create a file in a specific folder: http://stackoverflow.com/questions/19607559/how-to-create-a-spreadsheet-in-a-particular-folder-via-app-script – Ellen Spertus Jan 10 '17 at 17:57

1 Answers1

5

In general, these kinds of drive operations (create, copy, remove) do take a up to a couple seconds each.

You can speed this up a bit, instead of copying the spreadsheet into your folder and then deleting the original, simply move the file into the folder:

 function create_ss_in_folder(folder, name) {
  var ss = SpreadsheetApp.create(name);
  var id = ss.getId();
  var file = DriveApp.getFileById(id);
  var folder = get_folder_by_name(folder);
  folder.addFile(file);
  DriveApp.getRootFolder().removeFile(file);
  return id;
}

see: https://developers.google.com/apps-script/reference/drive/folder

This should save you a couple seconds.

Another option is to use the Advanced Drive service, which should allow you to create a spreadsheet file directly inside the desired folder in one step. I'm not sure how much faster this would be.

see: https://developers.google.com/apps-script/advanced/drive

Cameron Roberts
  • 7,127
  • 1
  • 20
  • 32