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

Google Sheets App Script:copyTo保留格式仅复制单元格值而非公式

解决方案

要实现**保留单元格格式但仅复制数据(不含公式)**的需求,你需要替换copyTT函数中copyTo方法的参数,使用专门的粘贴类型来同时保留值和格式,而非依赖contentsOnly参数。

修改后的完整代码

function mergeTT() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var source = ss.getRange("NEW_TTRACKER!J3:O3"); 
  var destSheet = ss.getSheetByName("NEW_TTRACKER"); 
  var lastRow = destSheet.getRange("J7:J11").getValues().filter(String).length;
  var destRange = destSheet.getRange(lastRow+7,10,1,6); 
  source.copyTo(destRange, {contentsOnly: true});
  var ws = ss.getSheetByName("NEW_TTRACKER")
  ws.getRange('K3:O3').clearContent();
} 

function copyTT() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var source = ss.getRange("NEW_TTRACKER!J5:O12"); 
  var destSheet = ss.getSheetByName("NEW_TDATA");
  // 确保目标区域与源区域行列数匹配
  var destRange = destSheet.getRange(destSheet.getLastRow()+1,1, source.getNumRows(), source.getNumColumns()); 
  // 关键修改:复制值和格式,忽略公式
  source.copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES_AND_FORMATS);
  
  var sheet = SpreadsheetApp.getActive().getSheetByName("NEW_TTRACKER"); 
  sheet.getRange('J7:O11').clearContent(); 
} 

关键修改说明

  1. 替换粘贴类型:将原代码的{contentsOnly: false}改为SpreadsheetApp.CopyPasteType.PASTE_VALUES_AND_FORMATS,该选项会:
    • 提取源单元格的最终计算值/文本,完全忽略公式
    • 完整保留源单元格的格式(字体、颜色、边框、对齐方式等)
  2. 匹配区域大小:调整destRange的定义,让目标区域的行数、列数与源区域完全一致,避免粘贴时出现区域不匹配的报错。

额外提示

测试时可以先手动执行一次「粘贴值和格式」的操作确认效果,再运行脚本验证一致性,确保和预期行为完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:31:07