首页 > 解决方案 > 谷歌表单根据提交的值将文件上传到特定的新文件夹

问题描述

我有 2 个字段的表单,可以说表单的名称是CV Drops

  1. 姓名
  2. 上传文件按钮

因此,默认情况下,当人们上传他们的文件时,它会保存在我的 Google Drive 中的CV Drops文件夹下。我想要的是文件根据他们在 field 中的输入放置在子文件夹中NAME

我怎么做?

标签: google-apps-scriptgoogle-forms

解决方案


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

  • 您的 Google 表单有 2 个字段。
    1. 姓名
    2. 上传文件按钮(在这种情况下,可以上传多个文件。)
  • 这两个字段都设置为必填字段。
  • 您想将上传的文件移动到具有第一个问题“名称”答案中的文件夹名称的特定文件夹。在这种情况下,您希望将文件夹创建为文件夹中的子文件夹。

为了实现您的目标,我想使用 Google Apps 脚本。

用法:

1. 示例脚本。

请将以下脚本复制并粘贴到 Google Form 的容器绑定脚本中。请设置您要创建的子文件夹的顶级文件夹 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. 测试脚本。

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

在此示例脚本中,如果存在相同的文件夹名称,则将文件放入现有文件夹。

笔记:

  • 这是一个简单的示例脚本。所以请根据您的实际情况进行修改。

参考:


推荐阅读