You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求Google Sheets去重统计并添加审批下拉菜单的脚本方案

Google Sheets 游戏反馈合并与审批管理脚本方案

一、脚本实现合并重复条目+统计提交次数

  1. 打开你的Google表格,点击顶部「工具」→「脚本编辑器」
  2. 删除默认代码,粘贴以下可直接使用的脚本:
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();
}
  1. 点击「保存」,给脚本命名(比如GameFeedbackTool)
  2. 首次运行点击▶️,按提示完成授权(Google会提示未验证,点击「高级」→「转到脚本名称」即可授权)

二、使用方式

手动更新合并数据

每次需要同步最新表单数据时,回到脚本编辑器,点击运行按钮即可。

自动更新(可选)

实现表单提交后自动合并:

  1. 点击脚本编辑器左侧的「触发器」图标⏱️
  2. 点击「添加触发器」,设置:
    • 运行函数:onFormSubmit
    • 事件来源:「从电子表格」
    • 事件类型:「表单提交」
  3. 保存并完成授权,后续新提交会自动更新合并数据。

三、规则说明

  • 合并逻辑:按游戏名称去重,提交次数累加;网页链接保留第一个非空值(若要保留最新链接,把代码中existing.link || link改成link || existing.link即可)
  • 审批状态:自动添加严格下拉菜单,仅允许选择Approved/Maybe/Rejected三个选项

内容的提问来源于stack exchange,提问作者Jww243

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:15:13