【GAS初心者必見】nullとundefinedの違いをガチャガチャで超カンタンに理解!
うーん、GASで使う `null` と `undefined` の違いがいまいちピンとこないなあ…

猫男

catman
ふふふ、そんなときは「ガチャガチャ」でたとえてみようか。
えっ、ガチャガチャ!?

猫男
ガチャガチャでわかる null と undefined の違い(GAS編)
まずは undefined のイメージから。
undefined = 入れ忘れカプセル
カプセルを回して出てきたと思ったら…
中身がなにも入ってなかった!
これは製造ミス。何かを入れるはずだったのに、「まだ何も設定されていなかった」状態です。
👉 GASでは、変数を宣言したけどまだ何も代入していないと、この「空カプセル」状態=
undefined
になります。
function test() {
let capsule;
Logger.log(capsule); // → undefined
}
null = わざと空のカプセル
カプセルを開けたら、「このカプセルは空です」という紙が入っていた。
これは「意図的に空」として扱っている状態。
👉 GASでは、「ここには値が“ない”と決めた」場合、自分で
null
を入れます。
function test() {
let capsule = null;
Logger.log(capsule); // → null
}
なるほど…!undefined はうっかり入れ忘れ、null はわざと空!

猫男

catman
その通り!GASで関数に値が渡ってこないときや、条件分岐で空チェックするときにめちゃくちゃ大事だよ。
まとめ
状態 | ガチャガチャ的なたとえ | GASでの意味 |
---|---|---|
undefined |
中身を入れ忘れた空カプセル(ミス) | 変数が未定義(値がセットされていない) |
null |
「空です」と書いた紙を入れたカプセル(意図的) | 開発者が意図的に「空」として設定した |
ガチャガチャでたとえてもらったら、めっちゃわかりやすかった!GASで使う場面がイメージできたよ!

猫男

catman
たとえ話はGASでもバッチリ通用するさ。また一緒にコード回していこうぜ!
【練習問題】GASで null と undefined をマスターしよう!
問題1:undefined の確認
次のコードを実行すると、`Logger.log` には何と表示されるでしょう?
function testCapsule() {
let capsule;
Logger.log(capsule);
}
問題2:null の代入
以下のコードにおいて、`capsule` に「意図的に空」とわかるよう代入してください。
function testNull() {
let capsule = ???;
Logger.log(capsule);
}
問題3:null と undefined を条件で区別する
次のような変数 `capsule` があるとします。
それが `undefined` のときは「未設定」と表示し、`null` のときは「空のカプセル」と表示、それ以外は「中身あり」と表示するコードを完成させてください。
function judgeCapsule(capsule) {
if (???) {
Logger.log('未設定');
} else if (???) {
Logger.log('空のカプセル');
} else {
Logger.log('中身あり');
}
}
【解答・解説編】
問題1の解答
undefined
解説:
変数 `capsule` は宣言だけされており、まだ値が代入されていないため undefined
です。
—
問題2の解答
function testNull() {
let capsule = null;
Logger.log(capsule);
}
解説:
null
は「空である」ことを明示的に示す値です。GASでも自分で「ここは空ですよ」と指定したいときに使います。
—
問題3の解答
function judgeCapsule(capsule) {
if (typeof capsule === 'undefined') {
Logger.log('未設定');
} else if (capsule === null) {
Logger.log('空のカプセル');
} else {
Logger.log('中身あり');
}
}
解説:
typeof capsule === 'undefined'
で未定義を判定し、
capsule === null
で明示的な空を区別しています。これで null
と undefined
の違いを条件分岐できます。