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

请求修改Google Apps Script:复制数据后取消复选框并限定触发范围

满足需求的Google Apps Script修改方案

以下是修改后的完整代码,已实现你要求的两个功能:

function onEdit(e){
  var ss = SpreadsheetApp.getActive();
  var sheet1 = ss.getSheetByName('Sheet1');
  var sheet2 = ss.getSheetByName('Sheet2');
  
  var timeZone = Session.getScriptTimeZone();
  var d = Utilities.formatDate(new Date(), timeZone, "MM-dd-yyyy | HH:mm:ss");
  
  var cell = e.range;
  var activeSheet = cell.getSheet();
  
  // 校验触发条件:Sheet1、E列、复选框勾选、行范围3-12
  if(activeSheet.getName() === "Sheet1" && 
     cell.getColumn() === 5 && 
     cell.getValue() === true &&
     cell.getRow() >= 3 && cell.getRow() <= 12){
    
    var row = cell.getRow();
    var targetRow = sheet2.getLastRow() + 1;
    
    // 复制B列数据到Sheet2
    sheet1.getRange(row, 2, 1, 1).copyTo(sheet2.getRange(targetRow, 1));
    // 写入时间戳
    sheet2.getRange(targetRow, 2).setValue(d);
    // 取消当前复选框勾选状态
    cell.setValue(false);
  }
}

关键修改说明

  • 限制生效行范围:在判断条件中加入cell.getRow() >= 3 && cell.getRow() <= 12,确保脚本仅对Sheet1中第3到12行的E列复选框生效
  • 自动取消复选框:在完成数据复制和时间戳写入后,通过cell.setValue(false)将触发的复选框重置为未勾选状态
  • 可靠性优化:使用事件参数e.range替代SpreadsheetApp.getActiveRange(),避免在多单元格编辑等场景下出现逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:32:38