Google Sheets Apps Script 复制当前选中单元格到新建工作表
实现方案
原脚本写死了固定复制范围A7:A9,没有读取运行时用户实际选中的单元格区域,所以无法适配每次不同的选择范围。调整后的脚本会自动读取当前选中的任意范围,复制到新建工作表中,代码如下:
function TestMakro() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 获取当前选中的活动范围 const sourceRange = spreadsheet.getActiveRange(); // 获取选中范围的尺寸,用于匹配新表的粘贴区域 const rangeRows = sourceRange.getNumRows(); const rangeCols = sourceRange.getNumColumns(); // 按原逻辑在第2个位置插入新工作表 const newSheet = spreadsheet.insertSheet(1); // 新表从A1单元格开始,划定和选中范围尺寸一致的粘贴区域 const targetRange = newSheet.getRange(1, 1, rangeRows, rangeCols); // 执行复制,保留原内容和格式 sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); }
可选调整说明
- 如果只需要复制单元格值、不带原格式,把
PASTE_NORMAL替换为PASTE_VALUES即可 - 如果需要粘贴位置和原表选中的位置完全对应(比如原表选中B3:D6,新表也粘贴到B3:D6位置),可以把定义
targetRange的代码替换为const targetRange = newSheet.getRange(sourceRange.getA1Notation()); - 原脚本开头全局声明的
var rangeList = SpreadsheetApp.getActiveRangeList();没有实际作用,可以直接删除。使用时只需要提前在工作表中框选要复制的范围,运行脚本即可自动完成复制。
内容的提问来源于stack exchange,提问作者BeatB
相关产品推荐
相关产品推荐

