求助:编写Google Apps Script实现带格式复制指定单元格至目标工作表末行
Google Sheets 脚本实现带格式复制单元格到目标工作表最后一行
以下是满足需求的完整脚本,它会复制Sheet A中A2:K12的所有内容和格式(包括高亮颜色、字体、边框等),并粘贴到Sheet B的最后一个可用行上方的空行:
function copyWithFormatToLastRow() { // 获取当前打开的电子表格 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 定位源工作表和目标工作表 const sourceSheet = ss.getSheetByName('Sheet A'); const targetSheet = ss.getSheetByName('Sheet B'); // 定义需要复制的源单元格范围 const sourceRange = sourceSheet.getRange('A2:K12'); // 高亮源范围(可选,这里用黄色高亮,可自行修改颜色代码) sourceRange.setBackground('#ffff00'); // 计算目标工作表的最后一行,下一行作为粘贴起始位置 const lastTargetRow = targetSheet.getLastRow(); const targetStartRow = lastTargetRow + 1; // 匹配源范围的行列数,定义目标粘贴范围 const targetRange = targetSheet.getRange(targetStartRow, 1, sourceRange.getNumRows(), sourceRange.getNumColumns()); // 复制所有内容和格式到目标范围 sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_ALL, false); }
关键说明:
SpreadsheetApp.CopyPasteType.PASTE_ALL:这个参数是核心,它会复制单元格的所有属性,包括值、公式、背景色、字体样式、边框、数据验证等,完全解决你只复制值的问题。- 高亮功能:脚本中加入了
sourceRange.setBackground('#ffff00')来高亮源单元格,如果你不需要可以直接删除这一行。 - 动态定位目标行:
getLastRow()会自动获取Sheet B最后有内容的行,加1确保粘贴到下一个空行,避免覆盖已有数据。
使用方法:
- 打开你的Google表格,点击顶部菜单「扩展程序」→「Apps 脚本」
- 将上述代码粘贴到脚本编辑器中,保存项目(任意命名即可)
- 点击运行按钮,第一次运行需要完成授权验证,按照页面提示操作即可。
内容的提问来源于stack exchange,提问作者Delta
相关产品推荐
相关产品推荐

