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);
}
}
}
Необходимо передать в вашу функцию данные, которые вы используете, как параметры.
Список имен обрабатываемых листов
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP