如何批量处理Google Sheets多工作表B列并合并工作表数据?
解决方案
快速处理:为所有工作表B列添加后缀", "
通过Google Apps Script批量完成:
- 打开目标Google表格,点击顶部菜单栏「扩展程序」→「Apps Script」。
- 删除编辑器内默认代码,粘贴以下脚本:
function addSuffixToColumnB() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheets = ss.getSheets(); sheets.forEach(sheet => { const range = sheet.getRange("B:B"); const values = range.getValues(); const updatedValues = values.map(row => { const cellValue = row[0]; return cellValue ? [cellValue + ", "] : [""]; }); range.setValues(updatedValues); }); SpreadsheetApp.getUi().alert("后缀添加完成!"); }
- 点击「运行」按钮,首次运行需按提示完成授权操作。
更优方案:合并所有工作表并添加表头区分
以下脚本会新建「合并结果」工作表,自动将所有工作表的B列数据合并,每个数据集以原工作表名称为加粗表头,数据集间用空行分隔(同时自动添加", "后缀):
- 打开Apps Script编辑器,粘贴以下脚本:
function mergeSheetsWithHeaders() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheets = ss.getSheets(); const targetSheet = ss.insertSheet("合并结果"); let rowIndex = 1; sheets.forEach(sheet => { const sheetName = sheet.getName(); // 写入加粗的工作表名称作为表头 targetSheet.getRange(rowIndex, 1).setValue(`*${sheetName}*`).setFontWeight("bold"); rowIndex++; // 过滤并格式化B列非空数据 const dataRange = sheet.getRange("B1:B").getValues().filter(row => row[0] !== ""); const formattedData = dataRange.map(row => [row[0] + ", "]); if (formattedData.length > 0) { targetSheet.getRange(rowIndex, 1, formattedData.length, 1).setValues(formattedData); rowIndex += formattedData.length + 1; // 空行分隔不同数据集 } }); SpreadsheetApp.getUi().alert("合并完成!结果已保存至「合并结果」工作表。"); }
- 点击「运行」,完成授权后即可执行。
注意事项
- 脚本会自动跳过B列空单元格,避免无效数据混入。
- 若「合并结果」工作表已存在,需先删除再运行脚本。
- 操作前建议备份原表格,防止意外数据变更。
内容的提问来源于stack exchange,提问作者Wharry
相关产品推荐
相关产品推荐

