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

求可绑定按钮的Google Script:仅复制Sheet的值与格式(不含公式)

简易Google Script:复制Sheet值与格式(不含公式)

嘿,这就给你一个完全符合需求的脚本,直接就能用,之后你绑定到按钮上就行:

function copyValuesAndFormatting() {
  // 获取当前打开的电子表格
  const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // 👇 这里可以自定义源工作表和目标工作表的名称
  const sourceSheet = activeSpreadsheet.getActiveSheet(); // 默认取当前活动的工作表,也可以改成 getSheetByName("你的源表名称")
  const targetSheet = activeSpreadsheet.getSheetByName("你的目标表名称"); // 替换成实际的目标工作表名称
  
  // 获取源表中所有已使用的单元格范围
  const sourceRange = sourceSheet.getDataRange();
  // 目标范围和源表范围大小一致,这里默认从A1开始,想改位置的话可以用 getRange(行号, 列号) 比如 getRange(2, 3) 就是第2行第3列开始
  const targetRange = targetSheet.getRange(sourceRange.getA1Notation());
  
  // 先复制格式(字体、颜色、边框、列宽行高这些都会同步)
  sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.FORMAT_ONLY, false);
  // 再复制值(只保留计算后的结果,不会带公式)
  sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  
  // 可选:复制完弹出提示,不需要的话可以删掉这行
  SpreadsheetApp.getUi().alert("值与格式已成功复制完成!");
}

简单说明:

  • 如果不是复制到另一个工作表,而是同一个表的其他位置,只需要修改targetRange的部分,比如改成targetSheet.getRange(5, 1)(从第5行第1列开始粘贴)
  • 要是想固定源表,把sourceSheet那行改成getSheetByName("你的源表名称")就行,比如getSheetByName("原始数据")

之后你绑定按钮的时候,记得把脚本的函数名copyValuesAndFormatting填到分配脚本的输入框里就好啦。

内容的提问来源于stack exchange,提问作者Max Ambinder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:26:35