寻求Google Sheets去重统计并添加审批下拉菜单的脚本方案
Google Sheets 游戏反馈合并与审批管理脚本方案
一、脚本实现合并重复条目+统计提交次数
- 打开你的Google表格,点击顶部「工具」→「脚本编辑器」
- 删除默认代码,粘贴以下可直接使用的脚本:
function mergeGameEntries() { // 可修改:原始表单响应工作表名称(默认是Form Responses 1) const rawSheetName = "Form Responses 1"; // 可修改:存放合并后数据的工作表名称 const mergedSheetName = "合并数据"; const ss = SpreadsheetApp.getActiveSpreadsheet(); const rawSheet = ss.getSheetByName(rawSheetName); let mergedSheet = ss.getSheetByName(mergedSheetName); // 自动创建合并工作表(含表头) if (!mergedSheet) { mergedSheet = ss.insertSheet(mergedSheetName); mergedSheet.getRange(1, 1, 1, 4).setValues([["游戏名称", "网页链接", "提交次数", "审批状态"]]); mergedSheet.setFrozenRows(1); } // 读取原始表单数据(跳过表头) const rawData = rawSheet.getRange(2, 1, rawSheet.getLastRow() - 1, 2).getValues(); const gameMap = new Map(); // 遍历合并重复条目 rawData.forEach(row => { const gameName = row[0].trim(); const link = row[1] ? row[1].trim() : ""; if (gameName) { if (gameMap.has(gameName)) { // 已存在该游戏:次数+1,保留已有非空链接 const existing = gameMap.get(gameName); gameMap.set(gameName, { link: existing.link || link, count: existing.count + 1 }); } else { // 首次出现:初始化次数为1 gameMap.set(gameName, { link: link, count: 1 }); } } }); // 整理合并后的数据格式 const mergedData = Array.from(gameMap.entries()).map(([name, data]) => [ name, data.link, data.count, "" ]); // 清空旧数据并写入新数据 mergedSheet.getRange(2, 1, mergedSheet.getLastRow() - 1, 4).clearContent(); if (mergedData.length > 0) { mergedSheet.getRange(2, 1, mergedData.length, 4).setValues(mergedData); } // 给审批状态列添加下拉菜单 const approvalCol = mergedSheet.getRange(2, 4, mergedSheet.getLastRow() - 1, 1); const validationRule = SpreadsheetApp.newDataValidation() .requireValueInList(["Approved", "Maybe", "Rejected"], true) .setAllowInvalid(false) .build(); approvalCol.setDataValidation(validationRule); SpreadsheetApp.getUi().alert("数据合并完成!"); } // 表单提交自动触发合并(可选) function onFormSubmit(e) { mergeGameEntries(); }
- 点击「保存」,给脚本命名(比如
GameFeedbackTool) - 首次运行点击▶️,按提示完成授权(Google会提示未验证,点击「高级」→「转到脚本名称」即可授权)
二、使用方式
手动更新合并数据
每次需要同步最新表单数据时,回到脚本编辑器,点击运行按钮即可。
自动更新(可选)
实现表单提交后自动合并:
- 点击脚本编辑器左侧的「触发器」图标⏱️
- 点击「添加触发器」,设置:
- 运行函数:
onFormSubmit - 事件来源:「从电子表格」
- 事件类型:「表单提交」
- 运行函数:
- 保存并完成授权,后续新提交会自动更新合并数据。
三、规则说明
- 合并逻辑:按游戏名称去重,提交次数累加;网页链接保留第一个非空值(若要保留最新链接,把代码中
existing.link || link改成link || existing.link即可) - 审批状态:自动添加严格下拉菜单,仅允许选择
Approved/Maybe/Rejected三个选项
内容的提问来源于stack exchange,提问作者Jww243
相关产品推荐
相关产品推荐

