GASでif (foo != "white") { bar; } とするとfooが白くてもbarが実行される
お世話になります。
以下のプログラムは私が初めて書いたGASのプログラムです。
やりたいことは、スプレッドシートで、各行において、一番左のセルの背景色に、その行全体の背景色を合わせるというものです。
function colorAsLeft(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var savedColor = "black";
for (var row = 1; row <= lastrow; row++) {
var currColor = sheet.getRange(row, 1).getBackground();
Logger.log("row=%s", row);
Logger.log("before savedColor=%s currColor=%s", savedColor, currColor);
// if (currColor != "white") { # NG
// if (currColor != "#FFFFFF") { # NG
if (currColor != "#ffffff") { #OK
savedColor = currColor;
Logger.log("in if savedColor=%s currColor=%s", savedColor, currColor);
}
Logger.log("savedColor=%s currColor=%s", savedColor, currColor);
sheet.getRange(row, 1, 1, lastcol).setBackground(savedColor);
}
}
上のようにすると、if文でcurrColor(現在行の先頭セルの色)を"#ffffff"と比較するとうまくいく(currColorが白でないときのみifブロックに入る)が、"white"や"#FFFFFF"と比較するとうまくいきません(必ずブロックに入ります。)。
なぜでしょうか。
私としては読みやすい"white"にしたいです。
よろしくお願いします。