Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.
В этом ответе я использовал скрипт из этой темы для достижения TRIM и CLEAN. И с помощью этой функции ваш скрипт был изменен.
Модифицированный скрипт:
function onEdit(e) {
if (typeof e.value != 'object') {
if ([4, 5].indexOf(e.range.columnStart)<0) return;
e.range.setValue(titleCase(e.value));
}
}
// Modified
function titleCase(str) {
return str.toString().split(/\b/).map(function(word) {
return word ? cleanForGAS(word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) : '';
}).filter(String).join(' ');
}
// This function is from https://stackoverflow.com/a/50053581
function cleanForGAS(str) {
if (typeof str == "string") {
var escaped = escape(str.trim());
for (var i = 0; i <= 31; i++) {
var s = i.toString(16);
var re = new RegExp("%" + (s.length == 1 ? "0" + s : s).toUpperCase(), "g");
escaped = escaped.replace(re, "");
}
var remove = ["%7F", "%81", "%8D", "%8F", "%90", "%9D"];
remove.forEach(function(e) {
var re = new RegExp(e, "g");
escaped = escaped.replace(re, "");
});
return unescape(escaped).trim();
} else {
return str;
}
}
Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, я приношу свои извинения.