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

Google Sheets onEdit脚本修改:将A列排序改为过滤隐藏已勾选行

解决方案

以下是调整后符合需求的完整脚本,已移除A列排序逻辑,新增A列已勾选行自动隐藏的过滤规则,同时保留原有的B列降序排序逻辑:

完整代码

function onEdit(event){
  const ssApp = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ssApp.getSheetByName("Adispo");
  const editedCell = sheet.getActiveCell();
  const columnDate = 2; // B列日期列
  const columnCheckbox = 1; // A列复选框列
  const tableRange = "A5:G1000"; // 目标操作范围
  const targetRange = sheet.getRange(tableRange);

  // 仅编辑A列或B列时触发后续逻辑
  if(editedCell.getColumn() == columnDate || editedCell.getColumn() == columnCheckbox){   
    // 仅按B列(日期)降序排序,移除原A列排序规则
    targetRange.sort( { column : 2, ascending: false } );

    // 处理A列过滤规则
    let existingFilter = sheet.getFilter();
    // 清理范围不匹配的旧过滤器
    if (existingFilter && existingFilter.getRange().getA1Notation() !== targetRange.getA1Notation()) {
      existingFilter.remove();
      existingFilter = null;
    }
    // 无有效过滤器则新建
    if (!existingFilter) {
      existingFilter = targetRange.createFilter();
    }
    // 设置过滤规则:仅显示A列未勾选(值为FALSE)的行,已勾选行自动隐藏
    const hideCheckedCriteria = SpreadsheetApp.newFilterCriteria()
      .whenEqualTo(false)
      .build();
    existingFilter.setColumnFilterCriteria(columnCheckbox, hideCheckedCriteria);
  }
}

逻辑说明

  1. 保留原有触发条件:仅编辑A列复选框或B列日期时才执行后续操作
  2. 排序逻辑调整:仅保留B列降序排序,移除原有的A列排序规则
  3. 过滤器逻辑:
    • 自动识别当前表格是否存在匹配范围的过滤器,避免重复创建报错
    • 过滤规则设置为仅显示A列值为FALSE的行,也就是已勾选(值为TRUE)的行会被自动隐藏

注意事项

  • 首次使用前建议手动删除表格中已有的旧过滤器,避免范围冲突导致脚本运行异常
  • 如果后续需要调整操作的表格范围,直接修改tableRange变量的取值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:51:04