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