В столбце 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);
}Обновлённый вариант:
то же только другие вхождения