据我了解,您的目标是:
- 使用表单答案(名称)创建文件夹
- 使用文件夹名称检查文件夹是否存在。
- 如果是,请将附件移至现有文件夹
- 如果没有,请创建新文件夹并移动附件。
在这里,我复制了您提供的代码并添加了 Allan Wells的答案以检查文件夹是否存在。
例子:
代码:
const PARENT_FOLDER_ID = "Parent folder ID here";
const initialize = () => {
const form = FormApp.getActiveForm();
ScriptApp.newTrigger("onFormSubmit").forForm(form).onFormSubmit().create();
};
const onFormSubmit = ({ response } = {}) => {
try {
// Get a list of all files uploaded with the response
const files = response
.getItemResponses()
// We are only interested in File Upload type of questions
.filter(
(itemResponse) =>
itemResponse.getItem().getType().toString() === "FILE_UPLOAD"
)
.map((itemResponse) => itemResponse.getResponse())
// The response includes the file ids in an array that we can flatten
.reduce((a, b) => [...a, ...b], []);
if (files.length > 0) {
//get the first response (which is Name) and use it as subfolder name
const subfolderName = response.getItemResponses()[0].getResponse();
//check if the subfolder name already exists
var folderId = folderExists(subfolderName);
var subfolder;
if(folderId){ //if subfolder name already exists, use the folder ID to get the folder object
subfolder = DriveApp.getFolderById(folderId);
}else{ //create new folder
const parentFolder = DriveApp.getFolderById(PARENT_FOLDER_ID);
subfolder = parentFolder.createFolder(subfolderName);
}
files.forEach((fileId) => {
// Move each file into the custom folder
DriveApp.getFileById(fileId).moveTo(subfolder);
});
}
} catch (f) {
Logger.log(f);
}
};
function folderExists(fname) { //Check whether folder exists or not
var folders = DriveApp.getFolderById(PARENT_FOLDER_ID).getFolders();
var theReturn = false,
i=0,
folderName = "",
folder;
while (folders.hasNext()) {
folder = folders.next();
folderName = folder.getName();
if (folderName.toLowerCase() == fname.toLowerCase()) {
theReturn = folder.getId();
break;
};
};
return theReturn;
};
样品表格:

样本输出:
在这里,我为“测试名称”提交了多个表格

参考: