2016-12-02 8 views
-1

私はスプレッドシート上のスクリプトを最初の列を大文字にしています。 これは素晴らしいツールです。しかし今は、最初の列だけでなく、シートのすべてのデータにProperを適用したいと思います。誰かが私にそれをする方法を教えてもらえますか? よろしく適切なGoogleスクリプトの代わりにスクリプトを使用

function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 
    ui.createMenu('Custom Menu') 
     .addItem('Capitalize', 'proper') 
     .addToUi(); 
} 


function proper() { 
    var arr = [], 
     s = SpreadsheetApp.getActiveSheet(); 
    s.getRange('A2:A') 
     .getValues() 
     .forEach(function(r) { 
      if (r[0]) arr.push([toTitleCase(r[0])]) 
     }); 
    s.getRange(1, 1, arr.length, arr[0].length) 
     .setValues(arr); 
} 

function toTitleCase(str) { 
    return str.replace(/\w\S*/g, function(txt) { 
     return txt.charAt(0) 
      .toUpperCase() + txt.substr(1) 
      .toLowerCase(); 
    }); 
} 
+0

スニペットを実行できない場合は、コードブロックであるスニペットであってはなりません。 (そして、スニペットエディタのHTMLパネルにJavaScriptコードを投稿しないでください) –

+0

ここでは推測しますが、必ず 's.getRange( 'A2:A')'をすべてのセルを取得するように変更しますか?あなたはどこにいらっしゃいますか? –

+0

そのことについて申し訳ありません。私はコーダーではない。私はちょうど学んでいます。私はデータを含むすべてのセルを選択したいと思います。または、列AからTを選択します。ご安心ください –

答えて

1

あなたは

function proper() { 
var s = SpreadsheetApp.getActiveSheet() 
s.getDataRange() 
    .setValues(
     s.getDataRange() 
     .getValues() 
     .map(function (r) { 
      return r.map(function (el) { 
       return !el ? null : typeof el !== 'string' && el ? el : toTitleCase(el); 
      }) 
     }) 
    ) 
} 

に適切な機能を変更し、それが動作するかどうかを確認することができますか?

シートに数値がある場合、このコードではエラーは発生しません。

関連する問題