Страницы: 1
RSS
гугл таблицы форматирование символов с 45 по 55 в ячейке, нужно применить макрос ко всем выделенным ячейкам независимо от текста в них
 
Здравствуйте, помогите пожалуйста решить проблему. Записала макрос для одной ячейки, а отредактировать его чтобы применить к диапазону не получается, и текст при дальнейшем запуске каждый раз вставляет из самой первой ячейки. Вот пытаюсь разобраться, как это исправить, и ничего не получается.
То есть мне нужно, чтобы в тексте каждой выделенной ячейки символы с 45 по 55 форматировались описанным ниже образом.

function _11() {  var spreadsheet = SpreadsheetApp.getActive();
 spreadsheet.getCurrentCell().setRichTextValue(SpreadsheetApp.newRichTextValue()
 .setText('гор Москва, Юровская улица, дом 103, площадь 17,1 кв.м. (этаж 4, пом. IX, мм 317), кадастровый номер 77:08:0000000:2191')
 .setTextStyle(45, 55, SpreadsheetApp.newTextStyle()
 .setForegroundColor('#9900ff')
 .setBold(true)
 .build())
 .build());
 spreadsheet.getCurrentCell().offset(1, 0).activate();
};
Изменено: Мария Орлова - 08.11.2022 13:47:52
 
здравствуйте
Так?
Скрытый текст
 
Цитата
написал:
здравствуйте
Так?
    Скрытый текст      
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38      function myFormat() {        var sheet = SpreadsheetApp.getActiveSheet();        var res = sheet.getActiveRangeList().getRanges().map(range => {          const startRow = range.getRow();          const endRow = startRow + range.getNumRows() - 1;          const startColumn = range.getColumn();          const endColumn = startColumn + range.getNumColumns() - 1;          const temp = []          for (var r = startRow; r <= endRow; r++) {            for (var c = startColumn; c <= endColumn; c++) {              temp.push(sheet.getRange(r, c));            }          }          return temp;        });        var patern = /([0-9,]+)\s+кв\.м\./;        for (i = 0; i < res.length; i++) {          for (j = 0; j < res[i].length; j++) {            var cel = res[i][j]            var s = cel.getValue()            if (s) {              var p = s.match(patern);              if (p) {                var sl = p[0]                var pz = p.index                var pz2 = p.index + p[0].length                cel.setRichTextValue(SpreadsheetApp.newRichTextValue()                  .setText(s)                  .setTextStyle(pz, pz2, SpreadsheetApp.newTextStyle()                    .setForegroundColor(  '#9900ff')                    .setBold(true)                    .build())                  .build());              }            }          }        }    }   
 
Отличный вариант, все идеально работает в том случае если адрес прописан точно как в приведенном примере. Беда в том, что адреса разных блоков пишут по-разному, где-то площадь с пробелами, где-то без точек. Можно задать в макросе условие: "с 45 по 55 символ", чтобы я могла вручную в макросе менять номера символов для особенностей каждого блока? Огромное спасибо за помощь)
 
Подход не верный, но как хотите
Скрытый текст
 
Супер! пригодятся оба варианта, в зависимости от задачи. Вы очень выручили, огромное Вам спасибо!)
Страницы: 1
Наверх