#google-apps-script #replace
Вопрос:
Я создаю инструмент в электронных таблицах, и я сталкиваюсь с препятствием, когда дело доходит до автоматизации функции поиска и замены с помощью сценариев.
Я могу запустить базовый сценарий Famp;R, который применяется ко всему листу (найден в другом сообщении о переполнении стека), однако мне нужно применить это к определенным столбцам, а не ко всему листу.
например, Текущий скрипт на приведенном ниже листе находит любую пустую ячейку в наборе данных и заменяет ее «ПУСТОЙ». Я бы хотел, чтобы это происходило ТОЛЬКО в колонке А листа.
function FandR(){
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getSheetByName("Data Sheet");
var f = "";
var r = "BLANK";
var data = ss.getDataRange().getValues();
Logger.log(data.length);
for (var i = 0; i < data[0].length;i ){
for (var j = 0; j < data.length;j ){
if(data[j][i]==f)
ss.getRange(j 1,i 1).setValue(r);
}
}
}
Образец листа здесь — https://docs.google.com/spreadsheets/d/190J7AzKk4GsGSwPzvSNJau1cJKhlMQUJ87Uaavw7v8I/edit?usp=sharing
Ответ №1:
Смотреть ниже. Функция заменит весь FIND_TEXT в столбце A на REPLACE_TEXT . Если вам нужно более общее решение, которое заменит все ячейки в выбранном в данный момент диапазоне, используйте const frRange= sh.getActiveRange()
function FandR(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Data Sheet");
const FIND_TEXT = "";
const REPLACE_TEXT = "BLANK";
const frRange= sh.getRange("A:A")
// can replace above line with: const frRange= sh.getActiveRange()
const data = frRange.getValues()
const newData = data.map(row=>row.map(cell=>cell==FIND_TEXT?REPLACE_TEXT:cell))
frRange.setValues(newData)
}