我有一个Google表单,允许用户填写业务详细信息,然后在表单末尾添加JPG文件。我需要一个应用程序脚本:
- 在Drive中创建文件夹。文件夹名称应与第二个输入字段"企业名称"收到的输入相同。
- 将响应中收到的所有文件移动到该文件夹。
我试过了:
function onFormSubmit(e) {
const folderId = "1VXzzzzzzzzzzzzzz";
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));
}
但是,这不是一个完整的解决方案,因为每次我运行脚本时都会重新创建相同的文件夹。如果我能在表单提交上运行这个脚本,那就太好了。
subFolder
变量不指向文件夹,而是指向DriveApp.FolderIterator
类的一个实例。要得到一个文件夹,使用.next()
,像这样:
const folder = subFolder.hasNext() ? subFolder.next() : destFolder.createFolder(folderName);