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

如何使用App Script将表格单元格多行文本拆分为独立行?

解决方案:将单元格内多行文本拆分为独立行(Google Apps Script)

实现思路

  1. 读取工作表完整数据,区分表头与数据行
  2. 将每个数据行的单元格内容按换行符(或<br>标签)拆分为数组
  3. 按索引重组拆分后的元素,生成对应关系正确的新行
  4. 清除原数据行,写入拆分后的结果

完整代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:46:18