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

求助:通过Google App Script实现Google Sheets数据格式转换

Google Apps Script 合并Google Sheets同组数据

需求说明

原数据(两列结构):

A C
A D
A E
B F
B G
B H

转换目标:将同一第一列值的第二列内容合并到同一行,输出格式:

A C D E 
B F G H 

实现代码

function mergeSameGroupData() {
  // 获取当前活跃表格
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 定义源表和目标表名称,可根据实际修改
  const sourceSheetName = "数据源";
  const targetSheetName = "合并结果";

  // 获取源表数据
  const sourceSheet = ss.getSheetByName(sourceSheetName);
  if (!sourceSheet) {
    SpreadsheetApp.getUi().alert("未找到名为「数据源」的工作表,请检查名称");
    return;
  }
  // 获取所有数据,若有表头则添加.slice(1)跳过第一行
  const rawData = sourceSheet.getDataRange().getValues();
  
  // 用对象存储分组数据
  const mergedGroups = {};
  rawData.forEach(row => {
    const groupKey = row[0];
    const item = row[1];
    // 初始化分组数组
    if (!mergedGroups[groupKey]) {
      mergedGroups[groupKey] = [groupKey];
    }
    // 添加当前项到分组
    mergedGroups[groupKey].push(item);
  });

  // 转换为工作表可写入的二维数组
  const outputData = Object.values(mergedGroups);

  // 处理目标表:不存在则创建,存在则清空内容
  let targetSheet = ss.getSheetByName(targetSheetName);
  if (!targetSheet) {
    targetSheet = ss.insertSheet(targetSheetName);
  } else {
    targetSheet.clearContents();
  }

  // 将合并后的数据写入目标表
  targetSheet.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData);
}

使用提示

  • 替换代码中的sourceSheetName和targetSheetName为你实际的工作表名称
  • 如果源数据包含表头,将const rawData = sourceSheet.getDataRange().getValues();修改为const rawData = sourceSheet.getDataRange().getValues().slice(1);
  • 首次运行脚本时需完成Google授权,按照页面提示操作即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:27:09