見出し画像

【徒然GAS31】前回のコードをちょっと手直し

概要

前回のコードはマクロの記録に簡単に触れることが主目的だったので、

コードの可読性

を意識してちょっと手直し

前回のコード

function セルを青に塗りつぶす(){
 let ss = SpreadsheetApp.getActiveSpreadsheet();
 let sheet = ss.getActiveCell().setBackground('#0000ff');
}

気づいた人も多いと思うけど、

これだと、sheetて引数名でセルの操作をしてしまっているので、

コードを初めて見る人には誤解されやすい。

直すとしたらこんな感じ

function セルを青に塗りつぶす(){
 let ss = SpreadsheetApp.getActiveSpreadsheet();
 let sheet = ss.getActiveSheet();
 let blueCell = sheet.getActiveCell().setBackground('#0000ff');
}

実行前

スクリーンショット 2021-10-30 11.44.38

実行後

スクリーンショット 2021-10-30 11.45.19

スクリーンショット 2021-10-30 11.46.01

これで

選択セル範囲全てではなく、選択範囲の一番上だけ

あくまでも

ActiveCell = ひとつのセル

であることがわかるね👀

👉VBAのActiveかSelectionの違いと一緒。

引数名には

必ず

何をさせる

とか、

対象は何か

みたいに

第三者が見てもぱっと見でわかるものを付けることが大事

👉バグ回避にもつながる。

さらに、、、

青背景に黒文字は見にくいので、

白文字に変更したい場合

①マクロの記録で、

function セルを青背景で白文字(){
 let ss = SpreadsheetApp.getActiveSpreadsheet();
 let sheet = ss.getActiveSheet();
 let blueCell = sheet.getActiveCell().setBackground('#0000ff').setFontColor('#ffffff');
}

②コードが横に長くなっちゃうので、

メソッドチェーン(SwuftUIの基本)

を使えば、

こんなコードにも数秒で変更できるね。

function セルを青背景で白文字(){
 let ss = SpreadsheetApp.getActiveSpreadsheet();
 let sheet = ss.getActiveSheet();
 let blueCell = sheet.getActiveCell()
   .setBackground('#0000ff')//青塗りつぶし
   .setFontColor('#ffffff');//白文字
}

また

選択範囲の複数セルをまとめて、実行できないか

であれば、

アクティブなセルではなくて、

アクティブなレンジ=範囲

に変えてあげればいいだけだから、

こんなコードに変更

function セルを青背景で白文字(){
 let ss = SpreadsheetApp.getActiveSpreadsheet();
 let sheet = ss.getActiveSheet();
 let blueCell = sheet
   .getActiveRange() //選択中のセル範囲
   .setBackground('#0000ff')//青塗りつぶし
   .setFontColor('#ffffff');//白文字
}

で実行してみると

スクリーンショット 2021-10-30 12.13.14

スクリーンショット 2021-10-30 12.13.39

選択した複数セルが一気に青背景白文字になった✨


💃どちらが見やすいとか個人の問題だから、やり方は自由🕺

リファクタリングのコツ

コードは、後から一気に改修する人も多いけど、

書いた段階から、こまめにしていた方が漏れが減るからねー!

後からやればいいの後からは、いつまでも来ない

お知らせ

GASのスプレッドシートの操作は、エクセルVBAに親和性が高いから、

以下の記事で公開している教材も参考にしてみてね。


この記事が気に入ったらサポートをしてみませんか?