【徒然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');
}
実行前
実行後
これで
選択セル範囲全てではなく、選択範囲の一番上だけ
あくまでも
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');//白文字
}
で実行してみると
選択した複数セルが一気に青背景白文字になった✨
💃どちらが見やすいとか個人の問題だから、やり方は自由🕺
リファクタリングのコツ
コードは、後から一気に改修する人も多いけど、
書いた段階から、こまめにしていた方が漏れが減るからねー!
後からやればいいの後からは、いつまでも来ない
お知らせ
GASのスプレッドシートの操作は、エクセルVBAに親和性が高いから、
以下の記事で公開している教材も参考にしてみてね。
この記事が気に入ったらサポートをしてみませんか?