如何让Google Apps Script在4个指定工作表生效并扩展行迁移功能
多员工工作表的复选框行迁移脚本修改
修改后的完整脚本
function onEdit(e) { // 定义所有需要生效的员工工作表名称,替换成你的4个员工姓名 const employeeSheets = ["Cynthia", "张三", "李四", "王五"]; const src = e.source.getActiveSheet(); const r = e.range; // 触发条件判断:不在员工列表里、不是第9/10列、是表头行(第2行)、复选框未勾选,直接返回 if (!employeeSheets.includes(src.getName()) || ![9, 10].includes(r.columnStart) || r.rowStart === 2 || e.value !== "TRUE") { return; } let destSheetName; // 根据列判断是sold还是lost,对应目标工作表 if (r.columnStart === 9) { destSheetName = "Sold"; } else if (r.columnStart === 10) { destSheetName = "Lost"; } const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(destSheetName); // 迁移第1到8列的内容到目标表最后一行的下一行 src.getRange(r.rowStart, 1, 1, 8).moveTo(dest.getRange(dest.getLastRow() + 1, 1, 1, 8)); // 删除原工作表中的该行 src.deleteRow(r.rowStart); }
关键改动说明
- 多工作表适配:把4个员工的工作表名称放进
employeeSheets数组,后续要增减员工直接修改这个数组就行,不用改判断逻辑 - 扩展lost功能:新增第10列(对应lost复选框,如果你实际列数不是10,改成你的lost复选框所在列号)的判断,勾选后自动迁移到
Lost工作表 - 避免误触发:增加了复选框状态判断,只有当复选框被勾选(
e.value === "TRUE")时才执行迁移,取消勾选不会触发操作 - 表头保护:保留了原脚本的表头行(第2行)跳过逻辑,防止误操作表头
注意事项
- 确保你的
Sold和Lost工作表已经存在于当前表格中 - 如果你的lost复选框不在第10列,把代码里的
10改成实际的列号 - 员工工作表名称要和数组里的完全一致,大小写也要匹配
内容的提问来源于stack exchange,提问作者Cynthia Coon
相关产品推荐
相关产品推荐

