如何用Google Apps Script拆分Google Sheets单元格值并复制整行
问题
需要使用Google Apps Script实现:将Google Sheets中指定单元格的值按分隔符拆分为多个部分,每个拆分结果对应复制整行数据,替换拆分后的内容。示例如下:
输入表格
| 姓名 | 国家 | 运动项目 |
|---|---|---|
| John | USA | Basketball_Golf_Tennis |
| Mary | Canada | Tennis_Golf |
期望输出表格
| 姓名 | 国家 | 运动项目 |
|---|---|---|
| John | USA | Basketball |
| John | USA | Golf |
| John | USA | Tennis |
| Mary | Canada | Tennis |
| Mary | Canada | Golf |
本例分隔符为_。
解决方案
核心是使用JavaScript的split()方法拆分单元格字符串,结合Google Apps Script的表格操作API完成行复制。以下是完整实现脚本:
function splitAndDuplicateRows() { // 获取当前活动工作表 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 获取所有数据(包含表头) const data = sheet.getDataRange().getValues(); const header = data[0]; const processedData = [header]; // 初始化结果数组,保留表头 // 遍历所有数据行(跳过表头) for (let i = 1; i < data.length; i++) { const originalRow = data[i]; // 拆分目标列(此处为第三列,索引2)的值 const splitItems = originalRow[2].split('_'); // 为每个拆分结果生成新行 splitItems.forEach(item => { const newRow = [...originalRow]; newRow[2] = item.trim(); // 替换目标列内容,去除多余空格 processedData.push(newRow); }); } // 清空原表内容并写入处理后的数据 sheet.clearContents(); sheet.getRange(1, 1, processedData.length, processedData[0].length).setValues(processedData); }
关键说明
split('_'):将目标单元格字符串按_拆分为数组,可根据需求替换为其他分隔符(如split(','))。- 列索引调整:如果需要拆分的列不是第三列,修改
originalRow[2]中的数字(索引从0开始计数)。 - 执行方式:在Google Sheets的「扩展程序」→「Apps脚本」中粘贴代码,保存后运行函数即可完成处理。
内容的提问来源于stack exchange,提问作者agustin
相关产品推荐
相关产品推荐

