Google Apps Script Multiple Найдите и замените регулярные выражения в Google Sheets - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь написать скрипт Google Apps для поиска сокращений и аббревиатур на листах Google с использованием регулярных выражений. У меня есть десятки сокращений, которые нужно заменить более тысячи строк. Я нашел несколько отличных фрагментов кода из переполнения стека, которые помогают находить и заменять строки, но ничего для массового поиска регулярных выражений и замены на строки.

Пытаясь найти и заменить аббревиатуры и сокращения, я обнаружил, что мне нужно использовать регулярное выражение с флагом границы, чтобы оно не заменяло трехбуквенные совпадения в более крупных словах. В приведенном ниже примере я ищу аббревиатуру «xyz» и заменяю ее на «X Y Z». Но не хочу, чтобы оно совпадало со словом "abc xyz def".

function runReplaceInSheet(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheetName");
  var values = sheet.getDataRange().getValues();  

  // Replace Acronyms
  replaceInSheet(values, '\bxyz\b', 'X Y Z');

  // Write all updated values to the sheet, at once
  sheet.getDataRange().setValues(values);
}

function replaceInSheet(values, to_replace, replace_with) {
  //loop over the rows in the array
  for(var row in values){
    //use Array.map to execute a replace call on each of the cells in the row.
    var replaced_values = values[row].map(function(original_value) {
      return original_value.toString().replace(to_replace,replace_with);
    });

    //replace the original row values with the replaced values
    values[row] = replaced_values;
  }
}

Из моего небольшого понимания это связано с тем, что '.replace' работает только со строками, а не с регулярными выражениями. Я пытался избежать '\ b', используя двойные кавычки.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 06 мая 2019

Используйте регулярное выражение вместо строки:

replaceInSheet(values, /\bxyz\b/g, 'X Y Z');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...