如何在脚本修改文件名后更新Google Form回复板块的显示内容
问题原因
Google Form的回复面板存储的是用户上传文件那一刻的静态文件名快照,不会实时同步对应Drive文件的名称改动,因此你直接修改Drive文件名称不会自动更新Form端的显示内容。
解决方法
你需要在修改完Drive文件名称后,主动更新Form对应回复条目的响应内容,把新的文件名同步到Form的回复记录中。修改后的可实现需求的脚本如下:
function updateFileNameAndFormResponse() { var existingForm = FormApp.getActiveForm(); var formResponses = existingForm.getResponses(); for (var i = 0; i < formResponses.length; i++) { var formResponse = formResponses[i]; var itemResponses = formResponse.getItemResponses(); var updatedItemResponses = []; for (var j = 0; j < itemResponses.length; j++) { var itemResponse = itemResponses[j]; var item = itemResponse.getItem(); // 仅处理文件上传类型的问题,跳过其他类型题目 if (item.getType() !== FormApp.ItemType.FILE_UPLOAD) { updatedItemResponses.push(itemResponse); continue; } var fileIds = itemResponse.getResponse(); var newFileIds = []; for (var n = 0; n < fileIds.length; n++) { var fileId = fileIds[n]; var dFile = DriveApp.getFileById(fileId); // 此处可替换为你实际需要的命名规则 var newFileName = "New name " + (n + 1); dFile.setName(newFileName); newFileIds.push(fileId); } // 用相同的文件ID重新生成响应,触发Form读取最新文件名更新快照 var newItemResponse = item.asFileUploadItem().createResponse(newFileIds); updatedItemResponses.push(newItemResponse); } // 提交更新后的回复内容,覆盖原有记录 formResponse.withItemResponses(updatedItemResponses).submit(); } }
注意事项
- 首次运行脚本前请按提示完成权限授权,确保脚本拥有Form编辑、Drive文件编辑权限
- 若仅需处理新提交的回复,可给Form配置
提交表单时触发的脚本触发器,无需每次全量扫描所有历史回复 - 脚本运行完成后刷新Form回复页面,即可看到更新后的文件名
内容的提问来源于stack exchange,提问作者vanessa
相关产品推荐
相关产品推荐

