如何通过Google Apps Script为Google Forms添加图片上传功能
实现Google Forms问题的图片上传功能(Google Apps Script)
核心逻辑说明
Google Forms中的图片上传属于独立的文件上传问题类型,无法与文本、单选等问题合并。你需要在脚本中识别需添加图片上传的问题,为其单独创建文件上传项,或在原问题后附加图片上传要求。
具体实现步骤
标记需图片上传的问题
在存储问题的Google Sheets中新增一列(比如第3列),用TRUE/FALSE标记哪些问题需要附加图片上传功能;也可以通过问题文本中的关键词(如包含「上传图片」)自动识别。脚本中添加文件上传问题逻辑
结合你现有的导入流程,在读取Sheets数据时,判断当前问题是否需要图片上传,若需要则创建对应的文件上传项:
function importQuestionsWithImageUpload() { // 1. 关联你的Sheets和Form const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("问题列表"); const form = FormApp.openById("你的表单ID"); // 或用FormApp.create("新表单名称")创建新表单 const data = sheet.getDataRange().getValues(); // 2. 遍历问题数据(跳过表头,从第2行开始) for (let i = 1; i < data.length; i++) { const questionText = data[i][0]; // 第1列:问题文本 const questionType = data[i][1]; // 第2列:问题类型(文本/单选等) const needImageUpload = data[i][2]; // 第3列:是否需要图片上传(TRUE/FALSE) // 3. 创建原问题(沿用你已有的逻辑) let item; switch (questionType) { case "文本": item = form.addTextItem().setTitle(questionText); break; case "单选": const options = data[i][3].split(","); // 第4列:单选选项(逗号分隔) item = form.addMultipleChoiceItem() .setTitle(questionText) .setChoices(options.map(opt => FormApp.createChoice(opt.trim()))); break; // 补充其他问题类型的创建逻辑 } // 4. 若需要图片上传,添加文件上传问题 if (needImageUpload) { const uploadItem = form.addFileUploadItem() .setTitle(`请上传与「${questionText}」相关的图片`) .setAllowedFileTypes([FormApp.FileUploadType.IMAGE]) // 仅允许上传图片 .setMaximumFileSize(5); // 限制图片大小为5MB(可选) // 可选:设置自定义存储文件夹(默认存在「表单上传」文件夹) const targetFolder = DriveApp.getFolderById("你的目标文件夹ID"); uploadItem.setDestination(FormApp.FileUploadDestination.DRIVE_FOLDER, targetFolder); } } }
关键注意点
- 权限要求:运行脚本时需授权Google Drive和Forms的访问权限,按提示完成授权即可。
- 问题独立性:Forms不支持在单个问题中同时包含文本输入和图片上传,必须拆分为两个独立问题。
- 文件存储:上传的图片默认保存到Google Drive的「表单上传」文件夹,可通过
setDestination指定自定义文件夹。
内容的提问来源于stack exchange,提问作者Esat Kurtul
相关产品推荐
相关产品推荐

