首页 > 解决方案 > Google Apps 脚本:如果单元格不包含数组中的值,则从工作表中删除行

问题描述

在 Google 电子表格中,我有一个“数据表”。“J”列中的单元格包含“ColumnName”和“en”、“fr”、“de”等语言代码。我正在尝试删除除具有数组“valuesToLeave”值的行之外的所有行。

谁能告诉我这里哪里出错了?

function deleteRowsLangs() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('DataSheet');
  var r = s.getRange('J:J');
  var allValues = r.getValues();
  var valuesToLeave = ["en", "fr", "de"];
  for(var i=allValues.length-1;i>=0;i--)
  
  if(allValues[i] != valuesToLeave[0]){
      s.deleteRow(i+1);
      
    } else {
      //doNothing
    } 
  }

标签: arraysgoogle-apps-scriptgoogle-sheetsdelete-row

解决方案


function deleteRowsLangs() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('DataSheet');
  const rg = sh.getRange(1,10,sh.getLastRow(),1);
  const vs = rg.getValues().flat();
  const vtl = ["en", "fr", "de"];
  let d = 0;
  vs.forEach((e,i) => {
   if(!~vtl.indexOf(e)){sh.deleteRow(i + 1 - d++)}
  });
}

推荐阅读