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

如何修改Google Sheets脚本以删除两个指定列值均为0的行

脚本修改方案

问题原因

你当前脚本的过滤逻辑写反了:原代码里的判断条件val[COLS_TO_SEARCH.n] != DELETE_VAL && val[COLS_TO_SEARCH.y] != DELETE_VAL表示只有N列和Y列都不等于0时才保留该行,所以只要任意一列值为0就会被删除,和你需要的「仅两列均为0时删除行」的需求完全相反。

修改方法

仅需要调整filter方法中的判断逻辑,将「与(&&)」运算符替换为「或(||)」运算符即可,修改后逻辑为:只要N列不为0 或者 Y列不为0,就保留该行,只有两列同时为0时才会被过滤删除。

额外注意:Google Apps Script读取表格后获得的数组索引从0开始计算,你当前设置的n:13对应表格第14列(N列)、y:24对应表格第25列(Y列)匹配正确,如果后续调整搜索列需要对应修改索引值。

修改后完整代码

// Add UI to run script from spreadsheet
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Clear OI')
      .addItem('Clear OI', 'removeZeroOI')
      .addToUi();
}

// Delete rows functions
function removeZeroOI() {
  var SS = SpreadsheetApp.openById("mySheetID"); // 替换为你自己的表格ID
  var SHEET = SS.getSheetByName("OI Test");
  var RANGE = SHEET.getDataRange();
  
  var COLS_TO_SEARCH = {n:13, y:24}; // 搜索列N和Y(数组索引从0开始)
  var DELETE_VAL = 0; // 匹配删除的单元格值
  
  
  main(); 
  
  function main() {
    var deleteSelectedRows = removeFilterSetVals();        
  };

  
  function removeFilterSetVals() {
    var rangeVals = RANGE.getValues();
    var filteredRange = rangeVals.filter(function(val) {
      // 修改此处逻辑:只要有一列不为0就保留
      return (val[COLS_TO_SEARCH.n] != DELETE_VAL || val[COLS_TO_SEARCH.y] != DELETE_VAL)
    });
    
    RANGE.clearContent();
    var newRange = SHEET.getRange(1, 1, filteredRange.length, filteredRange[0].length);
    newRange.setValues(filteredRange);
  };
  
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:48:04