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

如何让Google Apps Script仅在可见行按指定列条件执行查找替换?

筛选状态下仅修改符合条件的可见行

修改后的完整代码

function findAndReplaceText2() {
  const searchText = "Undergoing QA";
  const replaceText = "Check Status";
  const sheetName = "OpenCasesSummary";
  const startRow = 6;
  const endRow = 1000;
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(sheetName);
  
  // 获取C列到I列的数据范围(对应原需求的C列和I列)
  const dataRange = sheet.getRange(startRow, 3, endRow - startRow + 1, 7);
  const values = dataRange.getValues();
  const outputValues = values.map(row => [...row]); // 复制原数据用于批量更新
  
  // 遍历每一行处理条件判断
  for (let i = 0; i < values.length; i++) {
    const actualRow = startRow + i;
    // 跳过被筛选隐藏的行
    if (sheet.isRowHiddenByFilter(actualRow)) continue;
    
    const cColumnValue = values[i][0]; // C列对应数组索引0
    const iColumnValue = values[i][6]; // I列对应数组索引6
    
    // 满足双条件时执行替换
    if (iColumnValue === searchText && cColumnValue !== "QA Queue") {
      outputValues[i][6] = replaceText;
    }
  }
  
  // 批量写入修改后的数据,提升执行效率
  dataRange.setValues(outputValues);
}

核心修改说明

  • 仅处理可见行:用sheet.isRowHiddenByFilter(actualRow)判断行是否被筛选隐藏,直接跳过隐藏行
  • 双条件校验:同时验证I列值为目标文本、C列值不等于"QA Queue"两个条件,仅符合要求的行才会被修改
  • 批量更新优化:一次性读取所有数据并批量写入结果,避免多次调用单元格写入方法导致的性能损耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:25:02