Google apps script 谷歌表单根据提交的值将文件上载到特定的新文件夹

Google apps script 谷歌表单根据提交的值将文件上载到特定的新文件夹,google-apps-script,google-forms,Google Apps Script,Google Forms,我有两个字段的表单,比如表单的名称是CV Drops 名字 上传文件按钮 因此,默认情况下,当人们上传他们的文件时,它将保存在我的谷歌硬盘中的文件夹CV Drops下。我想要的是,根据文件在字段NAME中的输入,将文件放置在子文件夹中 我该怎么做?我相信你目前的情况和目标如下 你的谷歌表单有两个字段。 名字 上传文件按钮(在这种情况下,可以上传多个文件。) 这两个字段都设置为必填字段 您希望将上载的文件移动到特定文件夹,该文件夹的文件夹名称来自第一个问题“名称”的答案。在这种情况下,您希望将

我有两个字段的表单,比如表单的名称是CV Drops

  • 名字
  • 上传文件按钮
  • 因此,默认情况下,当人们上传他们的文件时,它将保存在我的谷歌硬盘中的文件夹CV Drops下。我想要的是,根据文件在字段
    NAME
    中的输入,将文件放置在子文件夹中


    我该怎么做?

    我相信你目前的情况和目标如下

    • 你的谷歌表单有两个字段。
    • 名字
    • 上传文件按钮(在这种情况下,可以上传多个文件。)
    • 这两个字段都设置为必填字段
    • 您希望将上载的文件移动到特定文件夹,该文件夹的文件夹名称来自第一个问题“名称”的答案。在这种情况下,您希望将文件夹创建为文件夹中的子文件夹
    为了实现你的目标,我想使用谷歌应用程序脚本

    用法: 1.示例脚本。 请将以下脚本复制并粘贴到Google表单的容器绑定脚本中。请设置要创建的子文件夹的顶部文件夹ID。如果要在根文件夹中创建子文件夹,请设置
    root

    function onFormSubmit(e) {
      const folderId = "###";  // Please set top folder ID of the destination folders.
    
      const form = FormApp.getActiveForm();
      const formResponses = form.getResponses();
      const itemResponses = formResponses[formResponses.length-1].getItemResponses();
    
      Utilities.sleep(3000); // This line might not be required.
    
      // Prepare the folder.
      const destFolder = DriveApp.getFolderById(folderId);
      const folderName = itemResponses[0].getResponse();
      const subFolder = destFolder.getFoldersByName(folderName);
      const folder = subFolder.hasNext() ? subFolder : destFolder.createFolder(folderName);
    
      // Move files to the folder.
      itemResponses[1].getResponse().forEach(id => DriveApp.getFileById(id).moveTo(folder));
    }
    
    2.安装OnSubmit触发器。 请将OnSubmit事件触发器安装为可安装触发器

    3.测试脚本。 为了测试示例脚本和触发器,请打开谷歌表单,输入名称,上传文件并提交。这样,脚本将通过触发可安装的OnSubmit触发器来运行。并且,上传的文件被移动到创建的文件夹中,该文件夹名为“name”

    在本示例脚本中,当存在相同的文件夹名称时,文件将被放入现有文件夹中

    注:
    • 这是一个简单的示例脚本。因此,请根据您的实际情况进行修改
    参考资料:

    哇,太棒了,谢谢你,陌生人!顺便说一句,如果我想在每个文件名的“Name”字段中添加前缀,怎么做?@noobsee谢谢您的回复。从你的回复中,我可以理解你最初的问题已经解决了。我很高兴。关于第二个问题,在本例中,可以使用
    DriveApp.getFileById(id)
    检索上载文件的文件名。我想你可以用这个和
    folderName
    重命名上传的文件。这方面的方法是
    getName()
    setName()
    。是的,工作。顺便说一句,最近我在上传同名文件夹时出错,这意味着同名文件夹已经存在。如何在文件夹名称中添加带有数字“_1””“_2”等后缀,如“noobsee_1”、“noobsee_2”?@noobsee感谢您的回复。我很高兴你的第二个问题解决了。关于你的第三个问题,在这种情况下,需要修改我提议的脚本。你能把它作为新问题发布吗?因为当你的初始问题被评论改变时,看到你的问题的其他用户会感到困惑。通过将其作为新问题发布,包括我在内的用户可以想到您的新问题。如果你能合作解决你的新问题,我很高兴。你能合作解决你的第三个问题吗?我刚刚发布了一个问题:,谢谢你的回复:)。真的很感激