GASで数値かどうか判定するには?

GASで数値かどうか判定するには?

GASで数値かどうか判定するには?

GASで、指定の値が数値かどうかを判定するには「isFinite」関数を使います。 書式は以下の通りで、与えられた値が有限の数値であればtrue、そうでなければfalseの値を取ります。

isFinite関数の利用法

isFinite関数は、その引数が有限の数値かどうかを調べるために使用されます。この関数はJavaScriptのグローバル関数の一部であり、Google Apps Scriptでも動作します。

利用例

次の例では、isFiniteを使ってさまざまな値をチェックしています。

    
    function checkNumber() {
      var values = [123, 'abc', Infinity, -Infinity, NaN, '123'];
      for (var i = 0; i < values.length; i++) {
        var result = isFinite(values[i]);
        Logger.log('Value: ' + values[i] + ' is finite: ' + result);
      }
    }
    
    

isFiniteと条件分岐

有限の数値を判断した結果に基づいて条件分岐させることができます。次のような方法で、数値であれば特定の処理を行い、それ以外であれば別の処理を行うことが可能です。

    
    function processValue(value) {
      if (isFinite(value)) {
        // 数値の場合の処理
        Logger.log('Processing number: ' + value);
      } else {
        // 数値でない場合の処理
        Logger.log('Non-numeric value detected: ' + value);
      }
    }
    
    

関連情報

isFiniteを使うことで簡素に数値の検証が行えますが、新しいJavaScript仕様ではNumber.isFinite()も利用できます。こちらは型変換を行わず、厳密に数値型のみをチェックします。

    
    function checkStrictNumber() {
      var values = [123, 'abc', Infinity, -Infinity, NaN, '123'];
      for (var i = 0; i < values.length; i++) {
        var result = Number.isFinite(values[i]);
        Logger.log('Value: ' + values[i] + ' is strictly finite: ' + result);
      }
    }
    
    

QA セクション

質問 回答
isFiniteはどのような値でfalseを返すのですか? isFiniteはInfinity、-Infinity、NaN、および文字列やオブジェクトなどの非数値型でfalseを返します。
NaNは数値ではないのでしょうか? NaNは「Not-a-Number」の意味で、処理上で数値でないことを示すために使われます。
Number.isFiniteとisFiniteの違いは何ですか? isFiniteは非数値型でも数値に変換可能な場合trueを返しますが、Number.isFiniteは元の型が文字列や他の非数値型であればfalseを返します。

その他の参考記事:javascript 数字 チェック