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

OnEdit()与onEdit(e)切换及单工作表A1时间戳实现咨询

解决方案

不用替换成简单触发器onEdit(e),直接改造你现有的安装型触发器函数就行——安装型触发器同样能接收事件对象e,精准定位到被编辑的工作表,完全不影响原有功能的权限和运行逻辑。

关键修改点

  1. 给installedOnEdit函数添加事件参数e,通过e.range.getSheet()获取触发编辑的工作表
  2. 删除原来批量更新所有工作表A1的代码,只更新当前编辑表的A1单元格
  3. 修复原代码里的拼写错误(option_Pricing应为op_Pricing),避免运行报错

修改后的完整代码

function installedOnEdit(e){
  cpd = SpreadsheetApp.getActiveSpreadsheet();

  // 【新增】获取当前被编辑的工作表
  const editedSheet = e.range.getSheet();

  // 工作表显隐控制逻辑(原代码保留)
  var pac = cpd.getSheetByName("2: PAC ");
  var product_Details = cpd.getSheetByName("3: Product Details");
  var op_Details = cpd.getSheetByName("4: Op Details");
  var marketplace = cpd.getSheetByName("5. Marketplace Details");
  var approvals = cpd.getSheetByName("6: Approvals");
  var product_Pricing = cpd.getSheetByName("7a: Product Pricing");
  var op_Pricing = cpd.getSheetByName("7b: O Pricing");
  var eos_EOL = cpd.getSheetByName("8: EOS/EOL");
  var c_Overview = cpd.getSheetByName("C Overview");
  var copyofprodpricing = cpd.getSheetByName("Copy of 7a: Product Pricing");

  var [cella, cellb, cellc, celld, celle, cellf, cellg, cellh, celli] = c_Overview.getRange("C6:C14").getValues().flat();
  if (cella =="Yes") { pac.showSheet(); } else { pac.hideSheet(); }
  if (cellb == "Yes") { product_Details.showSheet(); } else { product_Details.hideSheet(); }
  if (cellc == "Yes") { op_Details.showSheet(); } else { op_Details.hideSheet(); }
  if (celld == "Yes") { marketplace.showSheet(); } else { marketplace.hideSheet(); }
  if (celle == "Yes") { approvals.showSheet(); } else { approvals.hideSheet(); }
  if (cellf == "Yes") { product_Pricing.showSheet(); } else { product_Pricing.hideSheet(); }
  if (cellg == "Yes") { op_Pricing.showSheet(); } else { op_Pricing.hideSheet(); }
  if (celli == "Yes") { eos_EOL.showSheet(); } else { eos_EOL.hideSheet(); }

  // 【修改】仅更新当前被编辑工作表的A1时间戳
  editedSheet.getRange("A1").setValue(new Date);

  // 审批时间戳记录逻辑(原代码保留)
  var email = Session.getEffectiveUser().getEmail();
  var email_check1= product_Pricing.getRange("E23");

  if (email_check1.isChecked()) {
    product_Pricing.getRange("F23").setValue(new Date());
    product_Pricing.getRange("G23").setValue(email);

  } else {
    product_Pricing.getRange("F23").clearContent();
    product_Pricing.getRange("G23").clearContent();

  }

  // 【修复原代码错误】原代码里的option_Pricing未定义,替换为op_Pricing
  var email_check2= op_Pricing.getRange("D17");

  if (email_check2.isChecked()) {
    op_Pricing.getRange("E17").setValue(new Date());
    op_Pricing.getRange("F17").setValue(email);

  } else {
    op_Pricing.getRange("E17").clearContent();
    op_Pricing.getRange("F17").clearContent();

  }

  // EOS/EOL行显隐逻辑(原代码保留)
  var eos = cpd.getSheetByName("8: EOS/EOL");
  var cellx = eos.getRange("D13").getValue();
  if ((cellx == "EOS") || ((cellx == ""))) { eos.hideRows(15); } else { eos.showRows(15); }

  // PAC详情行显隐逻辑(原代码保留)
  var general_info = cpd.getSheetByName("1: General Info (Required)");
  var check = general_info.getRange("J9").getValue();
  if (check == "Direct") { pac.hideRows(37, 8); } else {
    if ((check == "Partner") || (check == "")) {
      pac.showRows(37, 8);
    }
  }

  // 定价页面列显隐逻辑(原代码保留)
  var dirpar_check = general_info.getRange("J9").getValue();
  if (dirpar_check == "Direct"){
    
    copyofprodpricing.hideColumns(18,17);
  }
  else {
    copyofprodpricing.showColumns(18,17);
  }

  // 单元格背景切换逻辑(原代码保留)
  var toggle1 = general_info.getRange("G2") 
  var toggle2 = product_Details.getRange("H2") 
  var toggle3 = op_Details.getRange("H2") 
  var toggle4 = marketplace.getRange("G2") 
  var toggle5 = approvals.getRange("G2") 
  var toggle6 = product_Pricing.getRange("K4") 
  var toggle7 = op_Pricing.getRange("G5") 
  var toggle8 = eos_EOL.getRange("G2") 
  var toggle9 = pac.getRange("I2") 
  
  for (var i = 0; i < 15; i++) {
    if (i % 2 == 0) {
      toggle1.setBackground("BLACK");
      // toggle1.setFontSize(12);
      toggle2.setBackground("BLACK");
      toggle3.setBackground("BLACK");
      toggle4.setBackground("BLACK");
      toggle5.setBackground("BLACK");
      toggle6.setBackground("BLACK");
      toggle7.setBackground("BLACK");
      toggle8.setBackground("BLACK");
      toggle9.setBackground("BLACK");

    } 
    else {
      toggle1.setBackground("WHITE");
      // toggle1.setFontSize(10);
      toggle2.setBackground("WHITE");
      toggle3.setBackground("WHITE");
      toggle4.setBackground("WHITE");
      toggle5.setBackground("WHITE");
      toggle6.setBackground("WHITE");
      toggle7.setBackground("WHITE");
      toggle8.setBackground("WHITE");
      toggle9.setBackground("WHITE");

    } 
    SpreadsheetApp.flush(); 
    Utilities.sleep(200); 
  }
}

可选扩展:仅给特定工作表加时间戳

如果你只想让原代码里的指定工作表触发时间戳更新,可以在设置时间戳前加个白名单判断:

// 白名单工作表名称,和原代码里的列表一致
const allowedSheets = ["2: PAC ", "3: Product Details", "4: Op Details", "5. Marketplace Details", "6: Approvals", "7a: Product Pricing", "7b: O Pricing", "8: EOS/EOL", "C Overview"];
if (allowedSheets.includes(editedSheet.getName())) {
  editedSheet.getRange("A1").setValue(new Date);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:17:02