如果某列的单元格等于某个值,请清除应用程序脚本中这些单元格所属的行的内容

时间:2019-01-09 10:16:25

标签: google-apps-script google-sheets

我设法运行下面的脚本,以清除D列中具有“ book”值的单元格,但是我想清除这些单元格所属的整行。我该如何修改?我不想使用deleteRow(),因为它会减少工作表的行数。

function Remove() {
    var returnSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('xxx');
    var rowCount = returnSheet.getLastRow();

    for (i = rowCount; i > 0; i--) {
        var rrCell = 'D' + i;
        var cell = returnSheet.getRange(rrCell).getValue();
        var range = returnSheet.getRange(rrCell);
        if (cell == 'book' ){
            range.clearContent();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

替换

var range = returnSheet.getRange(rrCell);

使用

var range = returnSheet.getRange(i, 1, 1, returnSheet.getMaxColumns());
// getRange(startRow, startColumn, numberOfRows, numberOfColumns)

这就是我编写您的函数的方式。 这样,电子表格只有几个调用,而不是每行几个。 :)

function Remove() {

    var sheet = SpreadsheetApp.getActive().getSheetByName('xxx');

    var rangeList = [];

    var data = sheet.getDataRange().getValues();

    for (var i = 0; i < data.length; i++) {

        if (data[i][3] == 'book') {
        // Arrays are zero-based. The first element is
        // element 0, the second is element 1, etc.
        // D is the fourth column, therefore it's element 3.

            rangeList.push('A' + i + ':Z' + i);
            // Change Z to your last column
        }
    }

    sheet.getRangeList(rangeList).clearContent();
}

参考文献

getRange()

getRangeList()

RangeList

Array

Batch operations