javascript - 根据一系列字符串条件删除行

标签 javascript google-apps-script

我有数十个电子表格,数千行长,我想通过删除不满足条件的行来对它们进行子集化。

让我举一个简化的例子。假设 C 行具有大学系名称的字符串值(例如“ANTHRO”是人类学,“ART-HIST”是艺术史,等等)。大学有很多系,电子表格有每个系的很多条目,但我只想要人类学和艺术史的数据。因此,我的任务是编写一个脚本,删除不满足条件 RowC =“ANTHRO”或“ART-HIST”的每一行。

问题是,我不知道如何在 javascript/google-apps-script 中定义采用一系列(字符串)值的变量。在一次尝试中,我将“剔除”变量定义为一个数组,其中包含脚本判断数据的条件:

 var rowsDeleted = 0;
  var keep = ["ANTHRO", "ART-HIST"];
  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    if (row[2] != keep) {
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
}; 

然而它并没有起作用。我知道我可以简单地编写 if(row[2] != "ANTHRO"|| != "ART"),但实际上条件远不止两个。定义所谓的“剔除”变量似乎更有效。

关于为什么数组方法不起作用有什么见解吗?谢谢。

最佳答案

您可以尝试使用indexOf。如果行值不在数组内,则返回值-1,否则返回索引。

  var rowsDeleted = 0;
  var keep = ["ANTHRO",
              "ART-HIST"];
  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    if (keep.indexOf(row[2]) === -1) {
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
}; 

关于javascript - 根据一系列字符串条件删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899216/

相关文章:

javascript - 如何在回答特定的 Google 表单项目时发送批准人电子邮件

google-apps-script - 我可以从 Google 表格脚本生成文件吗?

javascript - 解决方法 : javascript dictionary which takes objects as keys

javascript - 设置背景颜色时,HTML 选择框在 Android 4.0 版上不显示下拉箭头

javascript - React router dom无法获取页面

javascript - Google 表格脚本 - 无法读取属性 1.0?

google-apps-script - 如果表单设置为收集电子邮件,则通过 Google Apps 脚本提交 Google 表单会失败

javascript - $(document).ready(...) 的调用堆栈是如何组装的?

javascript - 显示价格时值(value)中的逗号不起作用

javascript - 正则表达式在 Google Apps Script 的 body.replaceText() 中匹配 $ 但不匹配\$ 或 $$