如何获取Google Form中对应响应所属Section的标题?
解决Google Form响应中获取问题所属Section标题的方法
Google Form的Section是通过PageBreakItem(分页符)划分的,每个Section的标题对应分页符的标题。要获取目标问题所属的Section,需找到该问题对应Item在表单中之前最近的分页符,其标题即为所属Section名称。
以下是修改后的完整代码:
function onFormSubmit(event) { var faultString = "EXAMPLE FAULT STRING"; var form = FormApp.openById('1KMNq4gl3Uu2Iv7jZSM8Za9n2YejxQynxYYouThHYyi4'); var allFormItems = form.getItems(); // 获取表单所有项目(包含分页符) var formResponses = form.getResponses(); var formCount = formResponses.length; var formResponse = formResponses[formCount - 1]; var itemResponses = formResponse.getItemResponses(); for (var j = 0; j < itemResponses.length; j++) { var itemResponse = itemResponses[j]; var currentItem = itemResponse.getItem(); var faultCheck = itemResponse.getResponse(); if (faultCheck.includes(faultString)) { Logger.log('Fault found - Response to the check: "%s" was "%s"', currentItem.getHelpText(), faultCheck); // 获取当前Item所属的Section标题 var sectionTitle = getSectionTitle(currentItem, allFormItems); Logger.log('The section is "%s"', sectionTitle); } } } // 辅助函数:获取Item所属的Section标题 function getSectionTitle(targetItem, allItems) { var sectionTitle = "未找到Section"; // 从前往后遍历所有项目,记录最近的分页符标题 for (var i = 0; i < allItems.length; i++) { var item = allItems[i]; if (item.getId() === targetItem.getId()) { break; // 找到目标Item,停止遍历 } // 如果是分页符,更新当前Section标题 if (item.getType() === FormApp.ItemType.PAGE_BREAK) { sectionTitle = item.asPageBreakItem().getTitle(); } } return sectionTitle; }
关键逻辑说明
form.getItems():获取表单所有项目,包含作为Section标题载体的分页符。- 辅助函数
getSectionTitle:遍历表单项目,在找到目标Item前,记录最后遇到的分页符标题,即为目标Item所属的Section标题。 - 若目标Item位于第一个Section(无前置分页符),会返回"未找到Section",可根据需求修改默认值。
内容的提问来源于stack exchange,提问作者Adam Robson
相关产品推荐
相关产品推荐

