我有一个包含重复行的电子表格。重复的行不包含字符串“所有故事”的某些变体(有时写为“所有故事”或“所有故事”
我要删除或过滤不包含“所有故事”短语的行
到目前为止,我已经编写了一个脚本,该脚本确实删除了包含短语“所有故事”的行
但是我无法弄清楚如果行不包含短语的话如何删除
这是我到目前为止所拥有的:
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[2].indexOf("(all stories)") > -1) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
} else if (row[2].indexOf("(All Stories)") > -1) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
} else if (row[2].indexOf("(All stories)") > -1) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};
没有错误消息。它工作正常,只是脚本不正确!有什么想法可以确保脚本删除不包含字符串的行?
谢谢:)
答案 0 :(得分:1)
您无需检查索引是否大于-1,而只需检查索引是否正好为-1,这意味着该行不包含字符串。
如果先将行转换为小写字母,则也无需进行3种不同的检查。
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[2].toLowerCase().indexOf("(all stories)") == -1) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};