如何使用Google Apps Script在Google Sheets中对齐并转置数据
用Google Apps Script合并Google Sheets中同ID的多行数据
需求说明
原始数据格式
| Col1 | Col2 |
|---|---|
| 225566 | dash |
| 225566 | slash |
| 225566 | backspace |
| 221166 | enter |
| 221166 | delete |
| 221166 | shift |
目标数据格式
| Col1 | Col2 | Col3 | Col4 |
|---|---|---|---|
| 225566 | dash | slash | backspace |
| 221166 | enter | delete | shift |
实现代码
function consolidateData() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = ss.getSheetByName('原始数据'); // 替换为你的原始数据工作表名称 const targetSheet = ss.getSheetByName('整理后数据'); // 替换为目标工作表名称 // 获取原始数据,跳过表头行 const rawData = sourceSheet.getDataRange().getValues().slice(1); const resultMap = {}; // 按Col1的值分组,合并对应Col2的内容 rawData.forEach(row => { const id = row[0]; const content = row[1]; if (!resultMap[id]) { resultMap[id] = [id]; } resultMap[id].push(content); }); // 将分组结果转换为二维数组 const outputData = Object.values(resultMap); // 写入目标工作表 targetSheet.clear(); // 动态生成表头 const headers = ['Col1'].concat(Array.from({length: outputData[0].length - 1}, (_, i) => `Col${i+2}`)); targetSheet.getRange(1, 1, 1, headers.length).setValues([headers]); targetSheet.getRange(2, 1, outputData.length, outputData[0].length).setValues(outputData); }
使用说明
- 打开目标Google Sheets文件,点击菜单栏「扩展程序」→「Apps Script」
- 把上述代码粘贴到脚本编辑器,替换工作表名称为你实际使用的名称
- 保存脚本后运行
consolidateData函数,首次运行需完成授权验证 - 完成后「整理后数据」工作表会生成合并好的结果
内容的提问来源于stack exchange,提问作者user20795119
相关产品推荐
相关产品推荐

