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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:42:23