如何使用App Script将表格单元格多行文本拆分为独立行?
解决方案:将单元格内多行文本拆分为独立行(Google Apps Script)
实现思路
- 读取工作表完整数据,区分表头与数据行
- 将每个数据行的单元格内容按换行符(或
<br>标签)拆分为数组 - 按索引重组拆分后的元素,生成对应关系正确的新行
- 清除原数据行,写入拆分后的结果
完整代码
function splitMultilineCellsToRows() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sh = ss.getSheetByName('Sheet1'); // 替换为你的目标工作表名称 const dataRange = sh.getDataRange(); const originalData = dataRange.getValues(); // 提取表头,跳过表头处理数据行 const header = originalData[0]; const targetRows = originalData.slice(1); let processedRows = []; targetRows.forEach(row => { // 将每行的每个单元格内容按换行符拆分(如果是<br>则替换成'<br>') const splitColumns = row.map(cell => cell.toString().split('\n')); // 以第一列拆分后的行数为准,确保每行对应 const totalRows = splitColumns[0].length; // 遍历索引,重组每行数据 for (let i = 0; i < totalRows; i++) { const newRow = splitColumns.map(col => col[i] || ''); // 处理空值避免报错 processedRows.push(newRow); } }); // 清除原数据区域(保留表头) sh.getRange(2, 1, originalData.length - 1, originalData[0].length).clearContent(); // 写入拆分后的数据 if (processedRows.length > 0) { sh.getRange(2, 1, processedRows.length, processedRows[0].length).setValues(processedRows); } }
关键说明
- 拆分规则适配:如果单元格内的换行是HTML的
<br>标签而非实际换行,将代码中的split('\n')替换为split('<br>')即可 - 数据一致性:默认假设所有列拆分后的元素数量一致,如果存在列长度不一致的情况,可以添加额外判断逻辑处理错位问题
- 范围处理:使用
getDataRange()自动获取有效数据区域,无需手动指定行号,适配数据量变化
内容的提问来源于stack exchange,提问作者Rianti
相关产品推荐
相关产品推荐

