2017-11-05 8 views
0

セルに入力される各単語の最初の文字を大文字にしたいとします。私はプログラミングについて何も知らない。Googleスプレッドシートのタイトルケースのセルを大文字にする

私は私が探しているものを近くにありますが、このスクリプトではありませんすべての単語を大文字に次のスクリプトが見つかりました:あなたはちょうど既に提供、情報を適応との助けを必要とする場合には

function onEdit(e) { 
if (typeof e.value != 'object') { 
e.range.setValue(e.value.toUpperCase()); 
} 
} 
+1

あなたは 'proper'機能を試してみましたか? –

+0

[JavaScriptを使用して文字列をタイトルケースに変換する]の複製があります(https://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript) –

答えて

0

を前の回答は、その後、ここにある:

function onEdit(e) { 
    if (typeof e.value != 'object') { 
    e.range.setValue(titleCase(e.value)); 
    } 
} 

function titleCase(str) { 
    return str.toString().split(/\b/).map(function(word) { 
    return word ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() : ''; 
    }).join(''); 
} 

これは、明示的にタイトルケース、例えばに任意の更新のセルのテキストを変換します「大きな茶色の熊」は「大きな茶色の熊」になります。あなたが最初の手紙のみを活用し、手つかずの各単語の残りの部分を残すことを希望する場合は

は、あなたが.toLowerCase上記の関数では()一部を削除することができます。そして、「大きな茶色の熊」という文章は、「大きな茶色の熊」になるでしょう。

タイトルケースは、this answerから取得されました。

EDIT:

function titleCase(str) { 
    var isApostrophe = false; 
    return str.toString().split(/\b/).map(function(word) { 
    var result = word ? (!isApostrophe ? word.charAt(0).toUpperCase() : word.charAt(0).toLowerCase()) + word.slice(1).toLowerCase() : ''; 
    isApostrophe = (word == "'"); 
    return result; 
    }).join(''); 
} 
アポストロフィをconaining、単語の大文字部分をスキップするには、内語アポストロフィのための具体的な回避策導入し、このいずれかで、元 タイトルケース機能を置き換えることができます

これで、「BIG 'Brown Bear」というテキストが「A Big' Brown Bear」に変換されるようになりました。

EDIT 2: 特定の列のみにこのルールを適用するには、このバージョンでのonEdit機能を置き換えることがあります。

function onEdit(e) { 
    if (typeof e.value != 'object') { 
    if ([3, 5, 10, 11, 12, 13].indexOf(e.range.columnStart)<0) return; 
    e.range.setValue(titleCase(e.value)); 
    } 
} 
+0

大丈夫ですが、唯一の問題です私は、アポストロフィの後に大文字を大文字にしているということです。 –

+0

このコードを使用して特定の範囲のセルをターゲットにすることができますか? –

+0

@JohnMoose:このアプリケーションを制限するには、* onEdit *関数の最初の行を追加します: 'if(e.source.getActiveSheet().getName()!==" Sheet1 "|| e.range。 rowStart <2 || e.range.columnStart <2)return' これは、Sheet1でないシート、および2行目と2列目の前のセルの更新をスキップします。 – Edvins

関連する問題