如何用Google Script跨电子表格复制多个指定标签页纯值
Google Apps Script 跨表多工作表纯值复制方案
实现逻辑
- 预先配置需要复制的指定工作表名称列表,无需全表遍历匹配索引,减少无效计算
- 逐个处理配置列表内的工作表:先校验源表是否存在对应名称的工作表,避免脚本异常中断
- 目标表侧自动判断同名工作表是否存在:不存在则新建同名工作表承载内容,存在则先清空原有内容避免新旧数据重叠
- 仅读取源表数据范围内的纯值内容写入目标表,不携带公式、格式、数据校验规则等额外内容,完全匹配需求
参考代码
function copyMultiSheetsValuesOnly() { // 配置区域 请根据实际情况修改 const sourceSsId = 'XYZ'; // 替换为你的源电子表格ID const copySheetNames = ['ABC']; // 在此数组内填写所有需要复制的工作表名称,例如['ABC', '销售数据', '库存表'] const sourceSs = SpreadsheetApp.openById(sourceSsId); const targetSs = SpreadsheetApp.getActiveSpreadsheet(); copySheetNames.forEach(sheetName => { // 读取源表 不存在对应名称工作表时跳过 const sourceSheet = sourceSs.getSheetByName(sheetName); if (!sourceSheet) { console.log(`源表中未找到名称为「${sheetName}」的工作表,已跳过`); return; } // 获取源表全量纯值数据 const sourceDataRange = sourceSheet.getDataRange(); const sourceValues = sourceDataRange.getValues(); const totalRows = sourceDataRange.getNumRows(); const totalCols = sourceDataRange.getNumColumns(); // 处理目标表 let targetSheet = targetSs.getSheetByName(sheetName); if (!targetSheet) { // 不存在同名表则新建 targetSheet = targetSs.insertSheet(sheetName); } else { // 存在同名表则清空原有内容 targetSheet.clearContents(); } // 写入数据 targetSheet.getRange(1, 1, totalRows, totalCols).setValues(sourceValues); console.log(`工作表「${sheetName}」内容复制完成`); }) }
使用说明
- 将代码中
sourceSsId对应的XYZ替换为你实际的源电子表格ID - 在
copySheetNames数组中增删需要复制的工作表名称,支持同时配置多个标签页 - 脚本运行时不会复制源表的公式、单元格格式、条件规则,仅写入单元格显示的纯值内容
- 若目标表格中已存在同名工作表,脚本会清空该表现有内容后写入新数据,不会额外创建重复名称的工作表
内容的提问来源于stack exchange,提问作者Caroline Silva
相关产品推荐
相关产品推荐

