这是我上一个问题的第二集(已解决):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
。因此,该文件夹应为:
怎么做?
我相信您的目标如下。
Name
,您想通过添加后缀来创建新文件夹。
sample
是现有的和Name
的sample
提交,要在现有的文件夹名称重命名为sample_01
和想与文件夹名称创建新的文件夹sample_02
。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
提交相同的值时,才添加后缀。_01
,_02
,,,。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句