0

I am trying to modify the below to code so the all files in the var fileBlob = e.parameter['file'+i]; are uploaded into the new sub-folder that is created.

After submitting the upload, a new folder is created for each file uploaded and each file is uploaded to each folder.

How can I get the doPost to submit the upload files to the new sub-folder only. So if I upload 20 files, 20 files are added/uploaded to the one sub-folder only.

Multi File Upload Ui Form

Upload UI

Google Drive Results

G-Drive Folders Created

Code

function doPost(e) {
  var foldername = e.parameter.folderName;
  Logger.log('foldername = '+foldername);
  var numFiles = Number(e.parameter.hidden);
  Logger.log('numFiles = '+numFiles);
  for (var i = 1; i<=numFiles; i++){
    Logger.log(i);
    var fileBlob = e.parameter['file'+i];
    Logger.log(fileBlob);
    var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
    newFolder.getUrl();
    Logger.log(newFolder.getUrl());
    var newFile = DocsList.createFile(fileBlob);
    newFile.addToFolder(newFolder);

  }

Full Code here (Created by Serge insas)

Community
  • 1
  • 1
WallyG
  • 187
  • 1
  • 6
  • 16

2 Answers2

3

As mentioned in the other answer, the folder creation should happen just once before the loop but instead of adding the new file to the folder (and keeping it in the root folder as well unless you remove it) I would suggest to use the createFile method from the folder class instead.

The code becomes simpler :

function doPost(e) {
  var foldername = e.parameter.folderName;
  Logger.log('foldername = '+foldername);
  var numFiles = Number(e.parameter.hidden);
  Logger.log('numFiles = '+numFiles);
  var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
  for (var i = 1; i<=numFiles; i++){
    Logger.log(i);
    var fileBlob = e.parameter['file'+i];
    var newFile = newFolder.createFile(fileBlob);// create the file directly in the new folder
  }
}
Serge insas
  • 45,904
  • 7
  • 105
  • 131
  • Serge, question. I changed the Ui to have a listbox selection. Is there a way to submit the folder Url to the listbox selection row in the spreadsheet. Once the files are uploaded, I want the folder url to submit to that row in under column R. [link] – WallyG Jul 07 '14 at 16:46
1

I think your problem here is that you call .createFolder for each file. Try putting

var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);

outside of the for loop.

Peter Maidens
  • 443
  • 1
  • 6
  • 11
  • Hello Peter, Thank you. So, it now creates one sub-folder, but it only uploads one file instead of multiple files to the new folder created. – WallyG Jul 03 '14 at 01:32