从表单将文件上传到特定文件夹

时间:2020-08-27 08:01:13

标签: google-forms google-apps google-app-maker

我是一位编码知识有限的老师。我正在尝试创建一个Google应用程序脚本,以便我的学生可以从表单上载文档。在表单上,​​学生将从下拉列表中选择他们的名字,我希望脚本将文件上传到文件夹中,该文件与我先前在驱动器上创建的名字相同。

我找到了此脚本,该脚本允许根据文件夹ID将文件上传到特定文件夹。我该如何修改它们,以根据它们在表单上选择的名称上传到不同的文件夹ID?

function myFunction (e) {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var formResponse = formResponses[formResponses.length-1];
  var itemResponses = formResponse.getItemResponses();

  // I modified below script.
  Utilities.sleep(3000);

  var folderId = "1dNoanQMGXvBDIsIRITNHCXnP8srW_Wlt";  // Please set folder ID of the destination folder.

  var destfolder = DriveApp.getFolderById(folderId);
  for (var i = 0; i < itemResponses.length; i++) {
    if (itemResponses[i].getItem().getType() == "FILE_UPLOAD") {
      var ids = itemResponses[i].getResponse();
      for (var j = 0; j < ids.length; j++) {
        var file = DriveApp.getFileById(ids[j]);
        destfolder.addFile(file);
        file.getParents().next().removeFile(file);
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

通过向脚本中添加一个switch函数来获得所需的结果。希望对其他人有帮助......

function myFunction (e) {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var formResponse = formResponses[formResponses.length-1];
  var itemResponses = formResponse.getItemResponses();

  // I modified below script.
  Utilities.sleep(3000);

  var items = e.response.getItemResponses()
  var name = items[0].getResponse();
  
Logger.log('result is: ' + name);
  
   var parentFolderId = '';
  switch (name) {
    case 'Red':
      parentFolderId = "1JBHIj9BcR-_LDLSwU2nNLo1u5v0sWaAT";
      break;
    case 'Blue':
      parentFolderId = "1NkRQnMxaT2ZFOuLzKk7lc-pZt-OVlPhc";
      break;
    case 'Green':
      parentFolderId = "12EMeWGRwNnf3uE-JkhTmXxznX0OLL60V";
      break;
  }
  Logger.log('Switch result is: ' + parentFolderId);
  
  
  
  var folderId = parentFolderId ;  // Please set folder ID of the destination folder.

  var destfolder = DriveApp.getFolderById(folderId);
  for (var i = 0; i < itemResponses.length; i++) {
    if (itemResponses[i].getItem().getType() == "FILE_UPLOAD") {
      var ids = itemResponses[i].getResponse();
      for (var j = 0; j < ids.length; j++) {
        var file = DriveApp.getFileById(ids[j]);
        destfolder.addFile(file);
        file.getParents().next().removeFile(file);
      }
    }
  }
}