Как найти и заменить в определенном столбце GSheet, используя скрипт/макросы?

#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)
}