Сценарий приложения, как отформатировать ячейку в правильный текст (дело)
У меня есть форма, приходящая на мой лист, и иногда мои клиенты вводят текст в нижнем или верхнем регистре, а также с переносами строк
У меня есть этот код, чтобы сделать ячейку UPPERCASE и удалить разрывы строк
var val = responses.getRange( i + 1 , 13).getValue();
val = val.replace(/\n/g,", ");
responses.getRange( i + 1 , 13).setValue(val.toUpperCase());
Что мне нужно, это сделать эту ячейку в надлежащем случае, а не в UpperCase
Например, если текст "Привет, как дела?", Я хочу преобразовать в "Привет, как дела" или также "Привет, как дела?"
Я искал это, но я не могу найти решение
Любая помощь, пожалуйста?
Спасибо
3 ответа
- Вы хотите изменить из
hello how ARE YOU
вHello How Are You
а такжеHello how are you
используя скрипт Google Apps.
Если мое понимание верно, как насчет этой модификации? Пожалуйста, подумайте об этом как один из нескольких ответов.
Ход этой модификации заключается в следующем.
Сначала значение изменяется на строчные.
- В шаблоне 1 первые символы каждого слова изменяются на прописные.
- В шаблоне 2 первый символ значения изменяет верхний регистр.
Пример скрипта:
var val = "hello how ARE YOU";
var pattern1 = val.toLowerCase().replace(/\b[a-z]/ig, function(match) {return match.toUpperCase()});
var pattern2 = val.toLowerCase().replace(/^[a-z]/i, function(match) {return match.toUpperCase()});
console.log(pattern1) // Hello How Are You
console.log(pattern2) // Hello how are you
Ссылка:
Если вам нужны другие шаблоны, можете ли вы их предоставить?
Вот что я сделал, чтобы использовать функцию PROPER в скрипте приложений для кого-либо еще.
Сначала я помещаю функцию в ячейку по имени (в данном случае заказчик). Затем я использовал getDisplayValue, чтобы получить фактический текст. Потом записал обратно в камеру.
customer = sht.getRange(row, col).setValue('=PROPER("'+customer+'")').getDisplayValue();
sht.getRange(row, col).setValue(customer);
Немного хак / альтернатива, но работает.
Вместо этого используйте следующий код. Каждое слово внутри ячейки будет записываться с заглавной буквы. Вы можете установить триггер «при редактировании» или запускать его один раз в день или каждый час и т. д.
С помощью этого кода вы можете легко изменить диапазон, поэтому вместо C3:D (начните со строки 3 и включите столбцы C И D) вы можете использовать C:D (все строки в столбцах C и D) или C:C, или C3:C и т. д. Вы поняли. Я протестировал код и сейчас использую его. Никаких глюков.
function textCase1Name() {
const range = SpreadsheetApp.getActiveSheet().getRange("C3:D")
const values = range.getDisplayValues()
.map(row => row.map(col => (col) ? col.toLowerCase().replace(/\b[a-z]/ig, function(match) {return match.toUpperCase()}) : col))
range.setValues(values);
}