Javascript 将驱动器中提交的文件移动到其他文件夹

Javascript 将驱动器中提交的文件移动到其他文件夹,javascript,google-apps-script,google-drive-api,google-forms,drive,Javascript,Google Apps Script,Google Drive Api,Google Forms,Drive,每当有用户通过我的谷歌表单发送图像时,我都会尝试将提交的图像发送到唯一的子文件夹,这是我目前的代码: var idnumber = Utilities.formatDate(new Date(), 'America/Bogota', 'ddMMyyyyHHmmss') function onFormSubmit(e) { var driveMainFolder = 'MyFolder' var driveSubFolder = idnumber; // Creat

每当有用户通过我的谷歌表单发送图像时,我都会尝试将提交的图像发送到唯一的子文件夹,这是我目前的代码:

var idnumber = Utilities.formatDate(new Date(), 'America/Bogota', 'ddMMyyyyHHmmss')

function onFormSubmit(e) {  
    var driveMainFolder = 'MyFolder'
    var driveSubFolder = idnumber;    

// Create subfolder
    var parentFolder = DriveApp.getFoldersByName(driveMainFolder).next();
    var newFolder = parentFolder.createFolder(driveSubFolder);  

// Move files to subfolder
    var files = DriveApp.getFoldersByName(driveMainFolder).next().getFiles();
    while (files.hasNext()) {
        var file = files.next();
        var destination = DriveApp.getFoldersByName(driveSubFolder).next();
        destination.addFile(file);
        var pull = DriveApp.getFoldersByName(driveMainFolder).next();
        pull.removeFile(file);
    }     
}
它的工作原理是,在发送图像后,其中一些图像保留在“MyFolder”中,而不是直接移动到唯一的子文件夹

  • 在Google表单电子表格中创建OnFormSubmit事件时调用此触发器

  • 在“我的执行”中,触发器不会显示任何错误,但不会将整个图像移动到唯一的子文件夹

  • 我发送了5张图片,平均每张都有18kb


有没有办法从谷歌表单上传图像,并添加触发器来组织图像?谢谢

尽管我不确定这是否是您问题的直接解决方案,例如,在表单提交(e)上的
函数行后放置
Utilities.sleep(5000)
,怎么样{
?因为我认为提交表单时文件可能尚未完全创建。我不确定
5000
是否最适合您的情况。如果这不能解决您的问题,我很抱歉。顺便问一下,
组织图像的触发器有什么方法
?我编辑了您问题中的代码以删除一些r你拥有的教育程度,你在三个不同的地方声明根文件夹,这是没有必要的。你应该测试一下Taniake关于使用
sleep()的建议
。最后,当您将文件添加到
newFolder
时,您不需要将其分配给变量,因为之后您不会执行任何其他操作,因此该行应该是
newFolder.addFile(file);
这将是一个非常好的解决方案,但用户发送的请求可能在几秒钟内,因此我担心将一些图像从其他用户直接移动到文件夹中,不是吗,所以sleep这是一个可能的解决方案,但不是在上下文中。触发事件“OnFormSubmit”的是此代码要移动图像,谢谢@Tanaike@Frederik勒布朗感谢你的回复。OnSpand事件触发器是作为所有者运行的。所以当用户提交表单并触发触发器时,脚本就作为你的所有者来运行。这是怎么回事?如果我误解了你的目标,我道歉。是的,确切地说,正在发生的事情是…每次用户。附上5张图片并填写google表单,其中一些图片保留在MyFolder中,而不是移动,谢谢@tanaike