GAS初心者必見!null判定の基礎と実践テクニック

GASでデータがnullかどうか判定する方法がわからなくて…何かコツがあるのかな?
猫男
猫男
catman
catman
null判定はプログラミングの基本中の基本。catmanがGASでのnull判定についてしっかり教えてあげよう。

GASでのnull判定の基本

プログラミングでは、nullはデータが存在しないことを示す特別な値です。GASでもこのnullの判定は重要なスキルです。

null値を判定する方法

最も基本的な方法は、直接データがnullであるかを判定することです。


function checkNull(value) {
  if (value === null) {
    Logger.log("この値はnullです");
  } else {
    Logger.log("この値はnullではありません");
  }
}

このコードでは、===を使ってnullと比較しています。===は、型も含めて厳格に比較する演算子です。

その名も、

厳密等価演算子(げんみつとうかえんざんし)

です。値と型の両方が等しいかを比較するときに用いる演算子です。しっくりこなかったらGASの演算子も復習してみてください。

 

なぜ == で nullを判定しないのか?

えっ、なぜ「==」でnull判定しないのかですって?

それは、

null と undefinedを区別できないから

です。

特徴 undefined null
意味 変数が宣言されたけれど値が設定されていない 変数に「何もない」という値が
意図的に設定されている
用途 システムが自動的に使うことが多い 開発者が意図的に「空」を表すために使う
undefined object

==(等価演算子)は、

型が違っても値が等しいと“判断できる”なら true にする

という特徴があるので、これらnullとundefinedを一緒のものとして判定してしまうのです。

ということで、GASでのnull判定には厳密等価演算子(===)を使いましょう。

 

nullとundefinedの違いを復習したい方はこちらからどうぞ ↓

GASでのnull判定の実践テクニック

より実践的なnull判定テクニックをみていきましょう。

nullとundefinedを同時に判定する

null判定では「===」を用いましたが、

「==」を使えばnullundefinedを同時に判定できます。


function checkNullOrUndefined(value) {
  if (value == null) {
    Logger.log("この値はnullまたはundefinedです");
  } else {
    Logger.log("この値はnullでもundefinedでもありません");
  }
}

 

null合体演算子(Nullish Coalescing Operator)の活用

意図せず変数にnullやundefinedが入ったら大変なことになりますよね。

そんな時のために、デフォルト値を設定できる||演算子を使う方法もあります。


function getDefaultValue(value) {
  var result = value || "デフォルト値";
  Logger.log(result);
}

 

変数の値が、

  • false

  • 0

  • ”(空文字)

  • null

  • undefined

  • NaN

の場合、 || の右に書いたデフォルト値の値が変数に入るのです。

null、undefinedだけでなく、0falseも「偽」と判定されてしまうので注意が必要です。

なるほど、nullとundefinedはちゃんと区別する必要があるんですね!
猫男
猫男

練習問題:null判定のスクリプト作り

以下の条件に従ってGASのスクリプトを作ってみましょう。

  1. 配列の中身を全てチェックして、nullの項目があればログに「nullが見つかりました」と表示する。
  2. nullでない項目の数を数えてログに出力する。

解答・解説


function checkArrayForNull(arr) {
  var nullFound = false;
  var nonNullCount = 0;
  
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] === null) {
      nullFound = true;
    } else {
      nonNullCount++;
    }
  }
  
  if (nullFound) {
    Logger.log("nullが見つかりました");
  }
  
  Logger.log("nullでない項目の数は: " + nonNullCount);
}

// 使用例
var sampleArray = [null, 1, "catman", null, 3];
checkArrayForNull(sampleArray);

このスクリプトは、配列に対してループを実行し、nullが見つかるたびにnullFoundをtrueに設定します。要素がnullでない場合、nonNullCountをインクリメントします。プログラムは最後にこれらの結果をログに出力します。