Google Apps Script 基于下拉选项移动表格行的代码扩展咨询
适配多选项自动移动的Apps Script修改方案
完整修改后代码
// 固定配置参数 const sourceSheet = "Master" const check = { "col":6, // 监控的下拉列序号 "del": true // 移动后是否删除Master表的原行,不需要删除就改为false }; const pasteRange = { "start": 1, "cols": 6 // 要复制的列数 }; // 合法的目标工作表名单,和下拉选项完全对应 const validTargetSheets = new Set(["Completed", "Work in progress", "Approval required", "Done"]) function onEdit() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet() if(sheet.getName() === sourceSheet){ var cell = sheet.getActiveCell(); var cellCol = cell.getColumn(); var cellRow = cell.getRow(); if(cellCol === check.col){ const selectedVal = cell.getValue().trim() // 校验选中值是否为合法的目标工作表名 if(validTargetSheets.has(selectedVal)){ var exportRange = sheet.getRange(cellRow,pasteRange.start,1,pasteRange.cols); var pasteDestination = ss.getSheetByName(selectedVal); // 工作表存在性校验,避免误删工作表后脚本报错 if(!pasteDestination) return var pasteEmptyBottomRow = pasteDestination.getLastRow() + 1; exportRange.copyTo(pasteDestination.getRange(pasteEmptyBottomRow,1), SpreadsheetApp.CopyPasteType.PASTE_VALUES); if(check.del){ sheet.deleteRow(cellRow); } } } } }
核心调整说明
- 移除了原代码中硬编码的单个目标表名和单个匹配值,直接读取下拉选中的值作为目标工作表名,自动适配四个选项
- 新增
validTargetSheets集合校验选中值的合法性,只有在下拉选项范围内的值才会触发移动逻辑,避免误操作报错 - 新增目标工作表存在性校验,避免工作表误删除后脚本运行出错
- 所有原有配置项(监控列、是否删除原行、复制范围)都保留可灵活调整的配置入口,后续新增下拉选项仅需在
validTargetSheets集合里添加对应的工作表名即可
注意事项
- 请提前在表格中建好四个和下拉选项完全同名的工作表,名称大小写、空格都要完全匹配,避免脚本找不到目标表
- 如果不需要移动后删除Master表的原行,把
check对象里的del值改为false即可
内容的提问来源于stack exchange,提问作者Bob Hardball
相关产品推荐
相关产品推荐

