@Oleg_F

Как поменять значение в массиве?

Добрый день.
Подскажите пожалуйста, как можно поменять значение сразу в ряде ячеек?

Через getValues() я получаю массив данных. И через цикл, обращаясь к каждой ячейке, через replace() могу поменять, перезаписав данные в ячейке.

А если способ, поменять текст в ячейках, не обращаясь к ним через цикл? В документации google script, нашел (как мне кажется) подходящий метод replaceAllWith(replaceText), через который я так понимаю можно сразу поменять искомое значение, во всех ячейках. Но как использовать данный метод, не понял (не как не получается)

Буду признателен, если ответите на мой вопрос.
спасибо.
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
ProgrammerForever
@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!");
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы