Google表单多文件上传至指定Drive文件夹失败的技术求助
解决Google表单多文件上传到指定文件夹的问题
问题根源在于:多文件上传时,getResponse()返回的是逗号分隔的文件ID字符串,而非单个ID,直接传入getFileById()会导致识别失败。只需将该字符串拆分为数组,逐个处理每个ID即可解决问题,修改后的完整代码如下:
function saveDetailsInFolder(e) { var submissionResponses = e.response.getItemResponses(); var name = submissionResponses[0].getResponse(); var parentFolder = DriveApp.getFolderById("My desired parent folder"); var newFolder = parentFolder.createFolder(name); var fileUploads = submissionResponses.filter(item => item.getItem().getType().toString() === 'FILE_UPLOAD'); for (var x = 0; x < fileUploads.length; x++) { // 将逗号分隔的ID字符串拆分为数组,兼容单/多文件场景 var fileIds = fileUploads[x].getResponse().split(','); // 遍历数组处理每个文件ID for (var i = 0; i < fileIds.length; i++) { var fileId = fileIds[i].trim(); // 去除可能的空格,避免格式问题 if (fileId) { // 跳过空值,防止无效ID报错 DriveApp.getFileById(fileId).makeCopy(newFolder); } } } }
关键修改说明
- 拆分ID字符串:用
split(',')将多文件的ID字符串拆分为数组,单文件场景下数组长度为1,不影响原有逻辑。 - 增强健壮性:添加
trim()处理可能存在的空格(部分场景下逗号后会带空格),同时增加空值判断,避免无效ID触发错误。 - 嵌套循环处理:外层循环遍历所有文件上传项,内层循环处理当前项的所有文件ID。
内容的提问来源于stack exchange,提问作者Joshua
相关产品推荐
相关产品推荐

