求助:通过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
相关产品推荐
相关产品推荐

