You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets脚本优化:实现员工工作表自动填充PM姓名需求

优化后的Google Sheets脚本:适配多员工工作表的自动PM填充+归档功能

很高兴听到你之前的归档/取消归档问题已经解决啦!针对你现在需要的标准化自动填充PM姓名的需求,我帮你优化了脚本,让它能自动适配所有以员工姓名命名的工作表——只要在C列填入客户信息,W列就会自动填充当前工作表的名称(也就是对应员工的姓名),同时完整保留你原来的归档/取消归档功能。

完整优化代码

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  // 1. 归档逻辑:从员工工作表勾选B列后移到Archive
  if((s.getName() == "Elisa" || s.getName() == "Miriam") && r.getColumn() == 2 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Archive");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }

  // 2. 取消归档逻辑:从Archive取消勾选B列后移回对应员工工作表
  else if(s.getName() == "Archive" && r.getColumn() == 2 && r.getValue() == false) {
    var row = r.getRow();
    var nameColumn = 23;
    var name = s.getRange(row, nameColumn).getValue();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName(name);
    if(targetSheet) { // 增加容错判断,避免找不到对应工作表时报错
      var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
      s.getRange(row, 1, 1, numColumns).moveTo(target);
      s.deleteRow(row);
    }
  }

  // 3. 自动填充PM姓名逻辑:所有员工工作表中,编辑C列时自动填充W列为工作表名称
  else if(r.getColumn() == 3) { // 仅在编辑第3列(C列)时触发
    var sheetName = s.getName();
    // 排除非员工工作表(比如Archive),可根据需求添加其他排除表名
    if(sheetName != "Archive") {
      var currentRow = r.getRow();
      var cColumnValue = r.getValue();
      var wColumnRange = s.getRange(currentRow, 23);
      // C列有内容则填充工作表名称,否则清空W列
      if(cColumnValue.toString().trim() !== "") {
        wColumnRange.setValue(sheetName);
      } else {
        wColumnRange.clearContent();
      }
    }
  }
}

关键优化点说明

  • 独立触发填充逻辑:把原来嵌套在取消归档流程里的填充代码抽出来,现在只要编辑C列就会立即触发,不用依赖归档操作,响应更及时
  • 动态获取PM姓名:用s.getName()直接读取当前工作表的名称(也就是员工姓名),彻底告别硬编码,新增员工工作表也能自动适配
  • 精准且高效:只针对编辑C列的操作执行填充,而且只处理当前编辑的行,不用遍历整列,既精准又节省资源
  • 增加容错机制:在取消归档时添加了if(targetSheet)判断,避免Archive表中W列姓名找不到对应工作表时出现报错
  • 灵活配置排除表:通过sheetName != "Archive"排除了归档表,你可以根据需求添加其他不需要触发填充的表名(比如&& sheetName != "统计汇总")

你可以直接替换原来的脚本,测试一下各个员工工作表的C列编辑效果,应该就能完美满足你的需求啦!

内容的提问来源于stack exchange,提问作者jdsr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:07:48