Поиск и подсветка множества слов в таблице

У меня есть таблица, в которой с помощью скрипта мне надо найти слова из списка стоп-слов, и подсветить их в таблице. Я нашел такой скрипт, но он подсвечивает только одно слово, хотя подобных слов "Мария" много. Вопрос: как сделать чтобы подсвечивал все варианты(желательно ячейку а не само слово), и как добавить много слов к поиску +- 1000

Пример таблицы, поиск слов должен быть в столбце C и D. Столбцы вниз уходят на 2000 строк введите сюда описание изображения

function selectText(){
  var ss = SpreadsheetApp.getActiveSpreadsheet() // SpreadsheetApp.openByUrl("URL на таблицу")
  var sheet = ss.getActiveSheet() // ss.getSheetByName("Имя таблицы")

  var text = "Мария" // тут должны быть все стоп-слова
  var arrData = sheet.getDataRange().getDisplayValues() // sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())

  for(var row = 0; row < arrData.length; row++){
    for(var col = 0; col < arrData[0].length; col++){
      if(arrData[row][col] == text){
        sheet.getRange(row+1, col+1).setBackground("Red")
      }
    }
  }
}

Ответы (1 шт):

Автор решения: Алексей Шебаниц

dictionary - словарь для поиска. range - диапазон поиска

function findDuplicates() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let range = sheet.getRange(1, 1, 4, 3).getValues();

  range.forEach((item, row) => {
    for (let column = 0; column < item.length; column++) {
      if (item[column] != "") {
        // console.log(item[column], row + 1, column + 1)
        dictionary.stop_words.forEach(word => {
          if (item[column].toString().toLowerCase().indexOf(word.toLowerCase()) !== -1) {
            console.log(true, row + 1, column + 1)
            sheet.getRange(row + 1, column + 1).setFontColor("green");
          }
        })
      }
    }
  })
}

let dictionary = {
  "stop_words": [
    "Мария",
    "Петр",
    "Алексей",
    "Ольга"
  ]
}
→ Ссылка