Google Apps Script 講座初級編「GASでスプレッドシートの列の幅を自由に設定する」
はじめに
後藤銃士です。昨日作った、「GASでスプレッドシートの列の表示形式を日時に設定する」ですがあれです、デフォルトだと100ピクセルに設定されていて時間まで細かく表示しちゃうと、幅が狭すぎて不便でしたね?
というわけで今回は、登録するまえに列の幅を設定してしまおう、というものです。前回一緒にやっておけばええやんけ、という気がしますがこういう細かいニーズってまとめて書いてしまうと埋もれてしまいがちかなと。それにブログとしても記事が増えますし(本音)。
ちなみに前回の表示形式もそうですが、一度設定してしまうと変更するまで変化しませんので、GAS で組み込む際はシートを追加するタイミングで1度だけにしておくとよいですね。
この機能が役に立つのは
スプレッドシートを使うとき、ほんのちょっと便利にしたい人向け
講座スタート
いつもどおりコピペだけで大丈夫です。が、その前に空のスプレッドシートを用意して下さい。
用意が出来ましたか?では、
新しくタブを開き「script.google.com」を入力してコードを書ける状態にして下さい。
そしていつもどおり1行目の3行目の間に
var spreadsheet = SpreadsheetApp.openByUrl('ご自身のスプレッドシートのURL'); var sheet = spreadsheet.getSheetByName("シート1"); var lastrow = sheet.getLastRow(); Logger.log(lastrow); if(lastrow == 0){ sheet.getRange("A:A").setNumberFormat("yyyy/mm/dd hh:mm:ss"); // 日付フォーマット sheet.setColumnWidth(1,150); // 幅の設定 } var today = new Date(); sheet.getRange(lastrow +1, 1).setValue(today); }
をコピペして保存します。
それでは実行してみましょう。
ほら。日付が被らずに表示されています。見やすい…。
今回追加したのは
sheet.setColumnWidth(1,150); // 幅の設定
ですね。1つ目の欄に、列番号を指定します。A列=1番という認識です。2つ目の欄がピクセル数になります。 デフォルトの100では足りませんからね。150ぐらいがちょうどよさそうでした。
▼150ピクセルに設定されていることがわかります
if(lastrow == 0){ sheet.getRange("A:A").setNumberFormat("yyyy/mm/dd hh:mm:ss"); // 日付フォーマット sheet.setColumnWidth(1,150); // 幅の設定 }
このあたりは気配りです。lastrow が 0 の場合、すなわちまだデータが登録されていない場合に、日付と幅の設定を行います。1つ追加されたらこの設定を改めてする必要はないので、動作させないようにしているわけです。無駄ですからね。
この無駄を極力排除する、という考え方は非常に重要ですから頭に叩き込んでおきましょう。無駄がないほうが処理が早くなります。今は体感できませんが、これから先、繰り返し処理が発生する場合に威力を発揮しますからね。
今回は以上となります。
それでは、ご覧いただきありがとうございました。