首页 > 解决方案 > 根据单元格文本删除 Google 表格中的行(如果包含)

问题描述

我正在尝试创建一个脚本,如果单元格包含但不完全匹配条件,它将自动删除该行。例如,如果单元格包含 gmail.com,脚本将删除行,作为较大电子邮件的一部分

123@gmail.com
123@yahoo.com
456@gmail.com
456@yahoo.com

这两封 yahoo 电子邮件将被保存,因为它们不符合条件。但是,我不确定在编写脚本时要使用正确的条件听写。这是我到目前为止所拥有的。

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');
  var r = s.getRange('B:B');
  var v = r.getValues();
  for(var i=v.length-1;i>=0;i--)
    if(v[0,i] 'gmail.com')
      s.deleteRow(i+1);
};

我会放一个 ==,但这只会删除与 gmail.com 完全匹配的行。我会用什么来代替 == 使它本质上是一个包含条件的文本?

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


尝试这个:

function deleteMatchingRows(string) {
  var string=string||'gmail.com';
  var ss = SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var lngth=sh.getLastRow();
  var rg=sh.getRange(1,2,lngth,1);
  var vA=rg.getValues();
  var n=0;  
  for(var i=1;i<vA.length;i++){
    if(vA[i][0] && vA[i][0].indexOf(string)>-1){
      sh.deleteRow(i-n+1);
      n++;
    }    
  }
}

推荐阅读