Если ячейки столбца равны определенному значению, очистите содержимое строк, которым эти ячейки принадлежат в приложении - PullRequest
0 голосов
/ 09 января 2019

Мне удалось запустить приведенный ниже сценарий, который очищает ячейки со значением 'book' в столбце D, однако я хочу очистить все строки, к которым принадлежат эти ячейки. Как я могу изменить это? Я не хочу использовать 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 голосов
/ 09 января 2019

Заменить

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

Массив

Пакетные операции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...