Как использовать regExp, чтобы найти значение в ячейке и поместить в следующую строку в таблице? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть таблица с одной строкой, которая содержит текст.Мне нужно извлечь значение из этого текста, используя regExp.

Мой код:

function myfunc(){

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = spreadsheet.getRange('A1:B1000');
  var regExp = /(\?<=Баланс)(.*)(\?=р8)/;

  for (var i = 1; i < 1000; i++) {
    var cell = range.getCell(i,1)
    var cell2 = range.getCell(i,2)    
    var val = regExp.exec(cell.getValue());
    cell2.setValue(val);
  }
}

Но он ничего не делает.В чем может быть проблема?

1 Ответ

0 голосов
/ 29 мая 2018

Вам нужно исправить скороговорку:

/Баланс(.*?)р8/

Затем вы можете получить доступ к значению группы 1 после сопоставления с regExp.exec(cell.getValue()), оно доступно через val[1].

function myfunc(){
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = spreadsheet.getRange('A1:B1000');
  var regExp = /Баланс(.*?)р8/;

  for (var i = 1; i < 1000; i++) {
    var cell = range.getCell(i,1)
    var cell2 = range.getCell(i,2)    
    var val = regExp.exec(cell.getValue());
    if (val) {
      cell2.setValue(val[1]);
    }
  }
}

Обратите внимание, что вы можете получить то, что вам нужно, просто =REGEXEXTRACT:

=REGEXEXTRACT(A13,"Баланс(.*?)р8")

enter image description here

...