如果文件夹名称重复,如何根据上传的文件自动重命名文件夹

新手

这是我上一个问题的第二集(已解决):Google表单根据提交的值将文件上传到特定的新文件夹

因此,我根据用户NAME使用此脚本在字段中输入的值成功在Google云端硬盘上创建了一个新文件夹

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个或更多人具有相同的上NAME载文件时,它将无法创建文件夹。并将文件放在根文件夹中。

我需要在文件夹名称上添加后缀。假设共有3个人NAME = noobsee因此,该文件夹应为:

  1. noobsee_01
  2. noobsee_02
  3. noobsee_03

怎么做?

Tanaike

我相信您的目标如下。

  • 当文件夹名称为value时Name,您想通过添加后缀来创建新文件夹。
    • 作为样品的情况下,当文件夹名称sample是现有的和Namesample提交,要在现有的文件夹名称重命名为sample_01和想与文件夹名称创建新的文件夹sample_02
  • 根据您的情况,该脚本会放在Google表单的容器绑定脚本中。并且onFormSubmit已作为OnSubmit触发器的可安装触发器安装。

在这种情况下,我建议修改“准备文件夹”的脚本。如下。

修改后的脚本:

从:

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

至:

// Prepare the folder.
const destFolder = DriveApp.getFolderById(folderId);
let folderName = itemResponses[0].getResponse();
const subFolder = destFolder.searchFolders("title contains '" + folderName + "'");
const reg = new RegExp(`^${folderName}$|^${folderName}_\\d{2}$`);
if (subFolder.hasNext()) {
  const folderNames = {};
  while (subFolder.hasNext()) {
    const fol = subFolder.next();
    const fName = fol.getName();
    if (reg.test(fName)) folderNames[fName] = fol;
  }
  const len = Object.keys(folderNames).length;
  if (len == 1 && folderNames[folderName]) {
    folderNames[folderName].setName(folderName + "_01");
  }
  folderName += "_" + ("00" + (len + 1)).slice(-2);
}
const folder = destFolder.createFolder(folderName);
  • 在这种情况下,仅当Name提交相同的值时,才添加后缀。
  • 从你的问题,它假设认为,后缀的数字位数为2一样_01_02,,,。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据文件夹名称重命名文件

根据文件夹名称重命名文件

如何根据文件夹名称重命名文件名?

通过文件夹名称重命名文件

在Linux上按文件夹的文件夹名称重命名文件

使用父文件夹的名称重命名子文件夹中的文件

python:通过子文件夹名称重命名子文件夹中的文件

Bash:使用文件夹名称重命名文件(每个文件夹 1 个)

如何批量将文件重命名为文件夹名称+递增编号?我收到名称重复错误

Windows CMD-根据文件夹名称重命名文件

使用文件夹名称重命名文件夹中的所有图像

如何使用文件夹名称重命名文件列表

批处理文件-根据父名称和(子)文件夹名称重命名文件

我可以使用父文件夹的名称重命名文件夹中的文件吗?

根据Spark Scala中的文件夹名称重命名和移动S3文件

Bash:重复+重命名文件夹

将文件从子文件夹复制到父文件夹并使用父文件夹名称重命名文件

重命名,根据新名称创建文件夹

Shell脚本从其父文件夹名称重命名多个文件

使用 bash `find` 使用文件夹名称重命名文件

在不同文件夹中使用相同名称重命名文件

通过添加父文件夹名称重命名文件

从文件夹名称重命名文件的Bash脚本问题

如何使用其他文件夹中文件的相同名称重命名多个图像?

在Java中用不同的名称重命名多个文件夹

如何仅重命名子文件夹而不更改父文件夹名称

根据文件内容重命名文件文件夹

如何正确重命名文件夹?

PHP:如何重命名文件夹