TransWikia.com

Удаление строки на основании данных в столбце

Stack Overflow на русском Asked by Aleksey Bolgov on February 2, 2021

Здавствуйте.
Есть рабочий скрипт по удалениию строки на основании данных в столбце. Но работает он только применительно к первому листу таблицы. Как указать конкретный лист?
А в идеале, как сделать так, чтобы скрипт сначала сработал на одном листе таблицы, а потом на втором.

function deleteCompleted() {
    var ss = SpreadsheetApp.getActiveSheet();
      var val = ss.getRange(1, 9, ss.getLastRow(), 1)
        .getValues()
        .reduce(function (a, b) {
            return a.concat(b);
        });
    for (var row = val.length - 1; row >= 0; --row) {
        if (val[row] == 'Удалить строку') {
            ss.deleteRow(parseInt(row) + 1);
        }
    }
}

One Answer

Необходимо передать в вашу функцию данные, которые вы используете, как параметры.

Список имен обрабатываемых листов

var names = ['Sheet1', 'Sheet2'];

Строка, на основании которой будет удаление

var pattern = 'Удалить строку';

Колонка отслеживания

var columnBase = 9;

Далее необходимо перебрать имена, организовать листы и применить основную функцию

function removeRows() {

  // Settings
  var names = ['Sheet1', 'Sheet2'];
  var pattern = 'Удалить строку';
  var columnBase = 9;

  // Bulk calls
  names.forEach(function(name) {
    deleteCompleted_(
      this.spreadsheet.getSheetByName(name),
      this.pattern,
      this.columnBase
    );
  }, {
    spreadsheet: SpreadsheetApp.getActiveSpreadsheet(),
    pattern: pattern,
    columnBase: columnBase
  });
}

// Rules
function deleteCompleted_(ss, pattern, columnBase) {
  var val = ss.getRange(1, columnBase, ss.getLastRow(), 1)
    .getValues()
    .reduce(function(a, b) {
      return a.concat(b);
    });
  for (var row = val.length - 1; row >= 0; --row) {
    if (val[row] == pattern) {
      ss.deleteRow(parseInt(row) + 1);
    }
  }
}

Варианты решения

Answered by contributorpw on February 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP