删除或过滤Google表格行(如果其中不包含字符串)

时间:2019-06-06 05:50:51

标签: javascript google-apps-script google-sheets

我有一个包含重复行的电子表格。重复的行不包含字符串“所有故事”的某些变体(有时写为“所有故事”或“所有故事”

我要删除或过滤不包含“所有故事”短语的行

到目前为止,我已经编写了一个脚本,该脚本确实删除了包含短语“所有故事”的行

但是我无法弄清楚如果行不包含短语的话如何删除

这是我到目前为止所拥有的:

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++;
 }
 }
};

没有错误消息。它工作正常,只是脚本不正确!有什么想法可以确保脚本删除不包含字符串的行?

谢谢:)

1 个答案:

答案 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++;
        } 
    }
};