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

Google Apps Script复制表格仅保留值不复制公式如何实现?

Google Apps Script 跨工作表复制仅保留纯值解决方案

问题核心原因

原有代码调用copyTo()方法时未指定粘贴类型,默认会复制单元格的全部属性,包括公式、格式、数据验证规则等。

最小改动方案(基于原代码调整)

仅需修改最后一行的copyTo调用,传入指定仅粘贴值的参数即可:

function CopyandPasteToB() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var mysheet = ss.getSheetByName('F1');
  var sourceSheet = ss.getSheetByName('F2');
  var sourceRange = sourceSheet.getRange("A52:E52");
  var rlast = mysheet.getLastRow();
  if (rlast === mysheet.getMaxRows()) mysheet.insertRowsAfter(rlast, 1); // 避免最后一行是表格最大行时报错
  var destRange = mysheet.getRange(rlast + 1, 1);
  // 指定粘贴类型为仅粘贴值,第三个参数false表示不转置内容
  sourceRange.copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}

更高效的替代方案(无需操作剪贴板)

直接读取源范围的纯值写入目标范围,执行速度更快,不受剪贴板内容干扰:

function CopyandPasteToB() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var mysheet = ss.getSheetByName('F1');
  var sourceSheet = ss.getSheetByName('F2');
  // 直接获取源范围的纯值数组
  var sourceValues = sourceSheet.getRange("A52:E52").getValues();
  var rlast = mysheet.getLastRow();
  if (rlast === mysheet.getMaxRows()) mysheet.insertRowsAfter(rlast, 1);
  // 目标范围尺寸需要和源范围完全匹配(1行5列)
  var destRange = mysheet.getRange(rlast + 1, 1, 1, 5);
  destRange.setValues(sourceValues);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:24:03