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

基于Apps Script合并共享两列值的不同工作表行

实现Google Sheets中玩具提案与安全评估数据的合并(Apps Script方案)

核心思路

以玩具/物种作为匹配标识,将"玩具提案"表与"安全评估回复"表的对应数据关联,合并到同一行中,最终输出到新建的"合并结果"工作表。

完整实现代码

function mergeToyData() {
  // 获取当前工作簿实例
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  
  // 读取两个数据源工作表
  const proposalSheet = ss.getSheetByName("玩具提案");
  const safetySheet = ss.getSheetByName("安全评估回复");
  
  // 获取所有数据(包含表头行)
  const proposalData = proposalSheet.getDataRange().getValues();
  const safetyData = safetySheet.getDataRange().getValues();
  
  // 构建安全评估数据的映射表:以物种为键,存储对应评估数据
  const safetyMap = {};
  // 跳过表头,从第二行开始遍历安全评估数据
  for (let i = 1; i < safetyData.length; i++) {
    const species = safetyData[i][0]; // 假设物种列在表格第一列(索引从0开始)
    // 存储当前行除物种外的所有评估字段
    safetyMap[species] = safetyData[i].slice(1);
  }
  
  // 组装合并后的数据
  const mergedData = [];
  // 生成合并表头:提案表头 + 评估表头(移除重复的物种列)
  const proposalHeaders = proposalData[0];
  const safetyHeaders = safetyData[0].slice(1);
  mergedData.push([...proposalHeaders, ...safetyHeaders]);
  
  // 遍历提案数据,匹配对应评估信息
  for (let i = 1; i < proposalData.length; i++) {
    const currentProposalRow = proposalData[i];
    const species = currentProposalRow[0]; // 同样假设物种在提案表第一列
    // 获取对应物种的评估数据,无匹配则用空值填充
    const matchedSafetyData = safetyMap[species] || Array(safetyHeaders.length).fill("");
    // 合并当前提案行与评估数据
    mergedData.push([...currentProposalRow, ...matchedSafetyData]);
  }
  
  // 创建或获取"合并结果"工作表
  let mergedSheet = ss.getSheetByName("合并结果");
  if (!mergedSheet) {
    mergedSheet = ss.insertSheet("合并结果");
  }
  
  // 清空目标表原有内容并写入合并后的数据
  mergedSheet.clearContents();
  mergedSheet.getRange(1, 1, mergedData.length, mergedData[0].length).setValues(mergedData);
  
  // 弹出完成提示
  SpreadsheetApp.getUi().alert("数据合并完成!");
}

代码说明与使用步骤

  1. 适配你的表格结构:

    • 如果你的工作表名称不是"玩具提案"或"安全评估回复",修改代码中getSheetByName的参数
    • 如果物种列不在表格第一列,调整代码中safetyData[i][0]和currentProposalRow[0]的索引值(注意表格列索引从0开始)
  2. 运行脚本:

    • 打开你的Google Sheet,点击「扩展程序」→「Apps 脚本」
    • 将上述代码粘贴到脚本编辑器,保存并命名项目
    • 点击运行按钮,首次运行需要完成授权流程(按照提示允许脚本访问你的表格数据)
  3. 查看结果:
    运行完成后,表格会自动生成"合并结果"工作表,其中每一行包含对应物种的提案信息与安全评估数据。

注意事项

  • 确保匹配列(物种)的内容完全一致(包括大小写、空格、特殊字符),否则会出现匹配失败的情况
  • 如果同一物种有多条安全评估记录,当前代码会保留最后一条记录;若需要合并多条记录,可以修改safetyMap的存储逻辑,将值改为数组后再拼接
  • 如需定期自动合并数据,可在脚本编辑器的「触发器」菜单中设置时间驱动触发器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:10:18