Ставит в соседний столбец метки, если в столбце А обнаружено вхождение

В столбце A слова и фразы. Скрипт проверяет наличие указанных и ставит в столбец B соответствующую цифру.
Пример:

function markKeywordsV3() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  if (lastRow < 2) return;
  
  var range = sheet.getRange(2, 1, lastRow - 1, 1);
  var values = range.getValues();
  var marks = [];
  
  var questionWords = [
    "какой", "какая", "как", "какие", "какого", "какую", "каким", "каких",
    "сколько", "скольки", "скольких", "скольким", "сколькими",
    "кому", "когда", "где",
    "положено ли", "можно ли", "полагается ли",
    "что", "кто", "чем", "кем", "куда", "откуда", "почему", "зачем",
    "ли" 
  ];
  
  for (var i = 0; i < values.length; i++) {
    var text = String(values[i][0]).toLowerCase().trim();
    var mark = "";
    
    // 1. Вопросы
    var isQuestion = false;
    for (var q = 0; q < questionWords.length; q++) {
      if (questionWords[q] === "ли") {
        if (new RegExp("\\bли\\b").test(text)) { isQuestion = true; break; }
      } else {
        if (text.indexOf(questionWords[q]) !== -1) { isQuestion = true; break; }
      }
    }
    if (isQuestion) { mark = 1; } 
    
    // 2. Многодетные
    else if (text.indexOf("многодет") !== -1) { mark = 2; }
    
    // 3. Инвалидность/Группы
    else if (text.indexOf("групп") !== -1 || text.indexOf("инвалид") !== -1) { mark = 3; }
    
    // 4. Пособия/Льготы
    else if (text.indexOf("пособи") !== -1 || text.indexOf("льгот") !== -1) { mark = 4; }
    
    // 5. Соцзащита
    else if (text.indexOf("соцзащит") !== -1 || (text.indexOf("социальн") !== -1 && text.indexOf("защит") !== -1)) { mark = 5; }
    
    // 6. Слово "это"
    else if (text.indexOf("это") !== -1) { mark = 6; }
    
    // 8. Охрана труда (оба корня)
    else if (text.indexOf("охран") !== -1 && text.indexOf("труд") !== -1) { mark = 8; }
    
    // 7. Работник
    else if (text.indexOf("работник") !== -1) { mark = 7; }
    
    // 9. Высотные работы
    else if (text.indexOf("высот") !== -1) { mark = 9; }
    
    // 10. Выплаты
    else if (text.indexOf("выплат") !== -1) { mark = 10; }
    
    // 11. Приказы
    else if (text.indexOf("приказ") !== -1) { mark = 11; }

    // 12. Министерства
    else if (text.indexOf("министерст") !== -1) { mark = 12; }

    // 13. Фонды
    else if (text.indexOf("фонд") !== -1) { mark = 13; }

    // 14. Пенсионный (фонд, возраст, удостоверение и т.д.)
    else if (text.indexOf("пенсион") !== -1) { mark = 14; }

    // 15. Пенсии (если не попали в "пенсионный")
    else if (text.indexOf("пенс") !== -1) { mark = 15; }
    
    marks.push([mark]);
  }
  
  sheet.getRange(2, 2, marks.length, 1).setValues(marks);
}

Обновлённый вариант:


то же только другие вхождения

Оставьте комментарий