В гугл таблицах есть такая замечательная функция, как «Записать макрос». Макрос – это скрипт, выполняющий, заранее записанные пользователем, действия. Он в точности повторит все ваши этапы работы, что бы в будущем избавить вас от рутины. Но есть проблема, макрос не может записать замену значений. Например, в процессе записи макроса, вы нажали «Правка > Найти и заменить» (Ctrl+H), и в таблице, из столбца «B», удалили все пробелы и слово «Руб». К сожалению эти действия просто не запишутся. Но есть выход, можно записанный выше макрос отредактировать, просто добавив в скрипт замену.
Редактируем записанный макрос
И так, нам нужно, что бы был уже, какой нибудь макрос. Если вам нужна только замена, то просто запишите «пустой» макрос и сохраните, например с названием «example». Далее переходим «Расширения>Макросы>Настроить макросы». Выбираем записанный ранее макрос, нажимаем возле него на 3 точки, далее «Изменить скрипт». Переходим во вкладку «Макросы.gs» и ищем наш скрипт. Он будет иметь вид:
function example() {
var spreadsheet = SpreadsheetApp.getActive();
// ваши записанные действия, например (переход в ячейку а1 и ее отчистка)
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function example() {
var spreadsheet = SpreadsheetApp.getActive();
// ваши записанные действия например (переход в ячейку а1 и ее отчистка)
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
// Получаем активную таблицу и лист
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Получаем данные из диапазона B1:B
var range = sheet.getRange("B1:B" + sheet.getLastRow());
var values = range.getValues();
// Перебираем все значения в диапазоне и меняем символы "Руб" и пробелы на пустоту "" (регистр не учитывается, если нужно, что бы учитывался, удалите оператор "i" во фрагменте "replace(/Руб/gi, "")")
for (var i = 0; i < values.length; i++) {
if (values[i][0]) {
values[i][0] = values[i][0].replace(/Руб/gi, "").replace(/ /g, "");
}
}
// Устанавливаем измененные значения обратно в диапазон
range.setValues(values);
};
А что если нужно сделать удаление и замену в разных диапазонах?
function example() {
var spreadsheet = SpreadsheetApp.getActive();
// ваши записанные действия например (переход в ячейку а1 и ее отчистка)
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
// Получаем активную таблицу и лист
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Обрабатываем диапазон B1:B, удаляя символ "пробел"
var rangeA = sheet.getRange("B1:B" + sheet.getLastRow());
var valuesA = rangeA.getValues();
for (var i = 0; i < valuesA.length; i++) {
if (valuesA[i][0]) {
valuesA[i][0] = valuesA[i][0].replace(/ /g, "");
}
}
rangeA.setValues(valuesA);
// Обрабатываем диапазон C1:C, меняя значение "Не оплачено" на "оплачено"
var rangeB = sheet.getRange("C1:C" + sheet.getLastRow());
var valuesB = rangeB.getValues();
for (var i = 0; i < valuesB.length; i++) {
if (valuesB[i][0]) {
valuesB[i][0] = valuesB[i][0].replace(/Не оплачено/gi, "оплачено");
}
}
// Вставляем данные обратно в таблицу
rangeB.setValues(valuesB);
};