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

如何仅将Source工作表的值复制到Dataset工作表最后空白行?

解决Google Sheets脚本仅复制纯值的问题

你的脚本使用copyTo()方法时默认会复制格式、公式等所有内容,要实现仅复制纯值,这里提供两种可行的修改方案:

方案一:修改copyTo()的复制参数

直接在copyTo()中指定仅粘贴值的选项,同时修正目标范围的大小匹配问题:

function copyInfo() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName('Dashboard');
  var pasteSheet = ss.getSheetByName('Dataset');

  // 获取源数据范围
  var source = copySheet.getRange(7, 2, 32, 11);
  // 计算目标起始行,匹配源范围的行列数
  var lastRow = pasteSheet.getLastRow();
  var destination = pasteSheet.getRange(lastRow + 1, 1, source.getNumRows(), source.getNumColumns());

  // 仅复制纯值到目标范围
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
  • 原代码重复调用SpreadsheetApp.openById('Sheet1')属于冗余操作,直接用已获取的ss对象调用getSheetByName()更高效
  • 目标范围的行列数要和源范围匹配,避免只粘贴部分数据
  • SpreadsheetApp.CopyPasteType.PASTE_VALUES参数明确指定仅复制值,不会携带格式或公式

方案二:直接获取值再写入目标范围

通过getValues()获取源范围的纯值数组,再用setValues()写入目标范围,这种方式更直观:

function copyInfo() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName('Dashboard');
  var pasteSheet = ss.getSheetByName('Dataset');

  // 获取源范围的纯值二维数组
  var sourceValues = copySheet.getRange(7, 2, 32, 11).getValues();
  // 定位目标起始行
  var lastRow = pasteSheet.getLastRow();
  // 将值写入目标范围
  pasteSheet.getRange(lastRow + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
}
  • getValues()返回的是仅包含单元格值的二维数组,完全不涉及格式、公式等额外信息
  • setValues()直接将数组内容写入目标单元格,操作更轻量化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:03:23