如何使用Google Sheets配合Apps Script批量填充Google Forms问题?
问题修复方案
你的代码逻辑本身没有结构性错误,出现问题无标题的情况,主要是三个常见原因,对应修复方案如下:
核心问题排查点
- 表格取值异常:
getValues()方法会返回单元格的原始值(公式返回的计算结果、日期对象、数字等),如果单元格是公式输出、或者存在特殊格式,很可能拿到空值或者非文本内容,导致设置标题失效
- 表格取值异常:
- 空单元格未过滤:如果A3:A14区间存在空白行,对应生成的问题标题就会为空
- 标识/权限问题:需要确认表格ID、工作表名称
Atividades、表单ID和实际内容完全匹配,且你对两个文件都有编辑权限,首次运行脚本时要完成全部授权操作
- 标识/权限问题:需要确认表格ID、工作表名称
修复后代码
function myForm() { // 打开表格和对应工作表 const spreadsheet = SpreadsheetApp.openById("1iYXYufNQ1NMUibEFfSWVvfD0vVi14cqMQNBbIok_JzM"); const sheet = spreadsheet.getSheetByName("Atividades"); // 打开目标表单 const formFinal = FormApp.openById("1_XYQcnlpg3EssBHI7X5T2QKyhplRj3FKufyBxPrJxQs"); // 设置表单基础信息 formFinal .setTitle("Pesquisa de Tempo Estimado - Finalístico - Rodada 3") .setDescription("Área temática: Finalístico \nRodada: 3") .setConfirmationMessage("Obrigado pela participação!") .setProgressBar(true); // 添加section header const sectionHeader = formFinal.addSectionHeaderItem(); sectionHeader.setTitle("Atividades"); // 读取A列区间的显示文本,打印日志方便排查 const activityList = sheet.getRange("A3:A14").getDisplayValues(); console.log("读取到的活动列表:", activityList); // 遍历生成问题,过滤空值 activityList.forEach(row => { const activityName = row[0].trim(); // 只给非空的内容生成问题 if (activityName) { const textItem = formFinal.addTextItem(); textItem.setTitle(activityName); } }); }
操作验证步骤
- 打开脚本编辑器的执行日志面板,运行脚本后查看日志输出的活动列表是否和你表格里的内容一致
- 如果日志输出为空,先核对工作表名称是否拼写正确、A3:A14区间是否确实有内容
- 如果日志输出正常但表单仍无标题,核对表单ID是否正确,确认你有该表单的编辑权限
内容的提问来源于stack exchange,提问作者Jacqueline Beber
相关产品推荐
相关产品推荐

