Добрый день.
Подскажите пожалуйста, как можно поменять значение сразу в ряде ячеек?
Через getValues() я получаю массив данных. И через цикл, обращаясь к каждой ячейке, через replace() могу поменять, перезаписав данные в ячейке.
А если способ, поменять текст в ячейках, не обращаясь к ним через цикл? В документации google script, нашел (как мне кажется) подходящий метод replaceAllWith(replaceText), через который я так понимаю можно сразу поменять искомое значение, во всех ячейках. Но как использовать данный метод, не понял (не как не получается)
Буду признателен, если ответите на мой вопрос.
спасибо.
Григорий Боев
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
Там, по сути, тоже будет цикл. Вот такой код делает то что вам нужно
function test_replaceInRange(){
let rangeAddress = "A:C";
let find = "1";
let replaceWith = "22";
replaceInRange(rangeAddress, find, replaceWith);
};
/**
* Заменяет find на replaceWith в диапазоне rangeAddress
* Telegram - @ProgrammerForever
*
* @param {string} rangeAddress Адрес диапазона
* @param {string} find Что менять
* @param {string} replaceWith На что менять
* @return Не возвращает значений
*/
function replaceInRange(rangeAddress, find, replaceWith){
find = find===undefined?"":(find+"");
replaceWith = replaceWith===undefined?"":(replaceWith+"");
let as = SpreadsheetApp.getActiveSpreadsheet();
let range = as.getRange(rangeAddress);
let values = range.getValues();
let replacedValues = values.map(row=>row.map(el=>(el+"").split(find).join(replaceWith)));
range.setValues(replacedValues);
range.activate();
as.toast("Done!");
};