Google Script - 多文件上传 - 如何将文件上传到新的子文件夹

时间:2014-07-03 00:43:13

标签: google-apps-script google-sheets

我正在尝试修改下面的代码,以便将var fileBlob = e.parameter['file'+i];中的所有文件上传到创建的新子文件夹中。

提交上传后,将为上传的每个文件创建一个新文件夹,并将每个文件上传到每个文件夹。

如何让doPost仅将上传文件提交到新的子文件夹。因此,如果我上传了20个文件,则只会将20个文件添加/上传到一个子文件夹中。

多文件上传Ui表格

Upload UI

Google云端硬盘结果

G-Drive Folders Created

代码

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);

  }

完整代码 here(由Serge insas创建)

2 个答案:

答案 0 :(得分:3)

正如在另一个答案中所提到的,文件夹创建应该只在循环之前发生一次,而不是将新文件添加到文件夹中(并将其保留在根文件夹中,除非你将其删除)我建议使用相反,createFile method from the folder class

代码变得更简单:

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
  }
}

答案 1 :(得分:1)

我认为你的问题是你为每个文件调用.createFolder。试试

var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
在for循环之外