Google Apps Script @福岡

GASで面白Webサービス&コスト削減や!

Google Apps Script 講座初級編「GASでスプレッドシートの列の幅を自由に設定する」

はじめに

後藤銃士です。昨日作った、「GASでスプレッドシートの列の表示形式を日時に設定する」ですがあれです、デフォルトだと100ピクセルに設定されていて時間まで細かく表示しちゃうと、幅が狭すぎて不便でしたね?

というわけで今回は、登録するまえに列の幅を設定してしまおう、というものです。前回一緒にやっておけばええやんけ、という気がしますがこういう細かいニーズってまとめて書いてしまうと埋もれてしまいがちかなと。それにブログとしても記事が増えますし(本音)。

ちなみに前回の表示形式もそうですが、一度設定してしまうと変更するまで変化しませんので、GAS で組み込む際はシートを追加するタイミングで1度だけにしておくとよいですね。

この機能が役に立つのは

スプレッドシートを使うとき、ほんのちょっと便利にしたい人向け

講座スタート

いつもどおりコピペだけで大丈夫です。が、その前に空のスプレッドシートを用意して下さい。

f:id:jijyoronn:20190108220754p:plain

用意が出来ましたか?では、

新しくタブを開き「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);
}

をコピペして保存します。

f:id:jijyoronn:20190108220818p:plain

それでは実行してみましょう。

f:id:jijyoronn:20190108220850p:plain

ほら。日付が被らずに表示されています。見やすい…。

今回追加したのは

    sheet.setColumnWidth(1,150); // 幅の設定

ですね。1つ目の欄に、列番号を指定します。A列=1番という認識です。2つ目の欄がピクセル数になります。 デフォルトの100では足りませんからね。150ぐらいがちょうどよさそうでした。

▼150ピクセルに設定されていることがわかります f:id:jijyoronn:20190108220932p:plain

  if(lastrow == 0){
    sheet.getRange("A:A").setNumberFormat("yyyy/mm/dd hh:mm:ss"); // 日付フォーマット
    sheet.setColumnWidth(1,150); // 幅の設定
  }

このあたりは気配りです。lastrow が 0 の場合、すなわちまだデータが登録されていない場合に、日付と幅の設定を行います。1つ追加されたらこの設定を改めてする必要はないので、動作させないようにしているわけです。無駄ですからね。

この無駄を極力排除する、という考え方は非常に重要ですから頭に叩き込んでおきましょう。無駄がないほうが処理が早くなります。今は体感できませんが、これから先、繰り返し処理が発生する場合に威力を発揮しますからね。

今回は以上となります。

それでは、ご覧いただきありがとうございました。