Google Sheets按钮复制同行区域到另一表空行的AppScripts实现咨询
Google Sheets 行内容一键复制存档实现方案
实现逻辑
最优方案通过绑定自定义Apps Script函数的按钮实现,点击时自动识别按钮所在行号,提取指定列的纯值内容,写入目标工作表的首个空白行,无需手动选中范围,操作效率高。
操作步骤
- 打开目标Google Sheets,点击顶部菜单栏「扩展程序」→「Apps Script」进入脚本编辑器
- 清空编辑器默认生成的代码,粘贴下方提供的完整代码
- 根据实际业务需求修改代码开头的配置项:源工作表名、需要复制的列序号、目标工作表名
- 点击保存按钮为项目命名,首次运行时按照提示完成脚本运行权限授权
- 返回表格界面,点击「插入」→「绘图」,自定义绘制按钮样式后保存,右键点击插入的按钮,选择右上角三个点图标→「分配脚本」,输入函数名
copyRowToTargetSheet后确认即可
完整代码
function copyRowToTargetSheet() { // ========== 自定义配置区域 ========== const SOURCE_SHEET = "数据源表"; // 按钮所在的工作表名称 const COPY_COLUMNS = [1, 2, 3, 5]; // 要复制的列序号,A=1、B=2,按需调整 const TARGET_SHEET = "存档表"; // 内容要粘贴到的目标工作表名称 // ========== 配置结束 ========== const ss = SpreadsheetApp.getActiveSpreadsheet(); const activeSheet = ss.getActiveSheet(); // 非源工作表点击直接退出,避免误操作 if (activeSheet.getName() !== SOURCE_SHEET) return; // 获取按钮所在的行号 const currentRow = activeSheet.getActiveRange().getRow(); // 提取指定列的纯值 const rowValues = COPY_COLUMNS.map(col => activeSheet.getRange(currentRow, col).getValue()); const targetSheet = ss.getSheetByName(TARGET_SHEET); // 定位目标表首个空白行 const firstEmptyRow = targetSheet.getLastRow() + 1; // 写入内容 targetSheet.getRange(firstEmptyRow, 1, 1, rowValues.length).setValues([rowValues]); // 可选:操作成功提示,不需要可删除 SpreadsheetApp.getUi().alert("内容已成功保存到目标表"); }
注意事项
- 按钮需要放置在对应需要复制的行内,点击时会自动识别当前行号,无需手动选中行
- 首次授权时若遇到「应用未验证」提示,点击「高级」→「前往[你的项目名称]」即可完成授权,脚本仅操作当前表格,无数据安全风险
- 如果需要复制整行内容,可将
COPY_COLUMNS替换为动态获取当前行有效列的逻辑,适配列数变化的场景 - 如果目标表需要从指定行开始写入,可修改
firstEmptyRow的计算逻辑,比如首行是表头要从第三行开始写入,可改为const firstEmptyRow = Math.max(targetSheet.getLastRow() + 1, 3)
内容的提问来源于stack exchange,提问作者aabujamra
相关产品推荐
相关产品推荐

