我有数十个电子表格,数千行长,我想通过删除不满足条件的行来对它们进行子集化。
让我举一个简化的例子。假设 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/