【问题标题】:Upload files to a specific folder from a form将文件从表单上传到特定文件夹
【发布时间】:2020-08-27 08:01:13
【问题描述】:

我是一名编码知识有限的老师。我正在尝试创建一个 google app 脚本,以便我的学生可以从表单上传文档。在表格上,学生将从下拉列表中选择他们的姓名,我希望脚本将文件上传到与我之前在驱动器上创建的名称相同的文件夹中。

我找到了这个脚本,它允许根据文件夹 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);
      }
    }
  }
}

【问题讨论】:

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


    【解决方案1】:

    我通过在脚本中添加一个 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);
          }
        }
      }
    }
    

    【讨论】:

    • AppMaker 将于本月底(2021 年 1 月)停止,您应该为您的应用考虑其他技术(如 AppSheet);-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多