谷歌表格:复制指定行至其他工作表并自动设置列值
解决方案:用Google Apps Script实现保留原行的自动复制功能
完全可以实现需求,以下是具体的实现步骤,替代宏来完成保留原行的自动复制操作:
1. 打开脚本编辑器
在谷歌表格顶部菜单栏点击「扩展程序」>「Apps Script」,打开脚本编辑界面。
2. 替换默认代码为以下脚本
function copyToPipelineWhenReceived() { // 关联表格及指定工作表 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = ss.getSheetByName("FY23 Prospect Tracker"); const targetSheet = ss.getSheetByName("FY23 Pipeline"); // 获取源表全部数据(默认第1行为表头) const data = sourceSheet.getDataRange().getValues(); let lastTargetRow = targetSheet.getLastRow(); // 遍历源表每一行 data.forEach((row, index) => { // 跳过表头行 if (index === 0) return; // 检查K列(数组索引为10)值是否为"Received" if (row[10] === "Received") { // 组装目标表需要的行数据 const newRow = [ row[0], // 源表A列(名字) row[1], // 源表B列(姓氏) "", // 目标表C列(按需调整,此处留空) "Current", // 目标表D列(Donor Stage) "Committed" // 目标表E列(Stage) ]; // 将数据写入目标表末尾 targetSheet.getRange(lastTargetRow + 1, 1, 1, newRow.length).setValues([newRow]); // 可选:在源表添加已处理标记(比如L列写"Copied"),取消下方注释即可 // sourceSheet.getRange(index + 1, 12).setValue("Copied"); lastTargetRow++; } }); }
3. 设置自动触发条件
- 在脚本编辑器左侧点击「触发器」图标(闹钟样式)
- 点击「添加触发器」,配置参数:
- 选择运行函数:
copyToPipelineWhenReceived - 事件来源:「从电子表格」
- 事件类型:「编辑时」(编辑源表自动触发)或「定时触发」(按周期批量处理)
- 保存后按提示完成脚本权限授权
- 选择运行函数:
关键说明
- 脚本仅复制数据,不会删除源表的行,解决你之前用宏遇到的问题
- 列索引基于数组从0开始的规则(A=0、B=1...K=10),如果工作表表头结构有变动,需对应调整索引值
- 若要避免重复复制同一行,可启用脚本中标记已处理的可选代码,后续运行时可新增判断逻辑跳过已标记行
内容的提问来源于stack exchange,提问作者Tiffani
相关产品推荐
相关产品推荐

