Сценарий приложения, как отформатировать ячейку в правильный текст (дело)

У меня есть форма, приходящая на мой лист, и иногда мои клиенты вводят текст в нижнем или верхнем регистре, а также с переносами строк

У меня есть этот код, чтобы сделать ячейку 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);
}
Другие вопросы по тегам