GASで数値の最大値・最小値を取得する方法!配列でのやり方も解説(max,min)

Google Apps Script(GAS)で複数の数値の中から、最も大きい値・最も小さい値を取得したいケースがあります。

Math.max、Math.minメソッドを使った最大値・最小値を取得する方法を解説します。

配列内に含まれる数値データの最大値と最小値を求める方法についても紹介します。

GASで最大値・最小値を取得

Google Apps Script(GAS)において、最大値や最小値を取得したいケースはよくあります。

例えば、色々なECサイトをスクレイピングし、価格情報を取得したうえで、最安値(最小値)を出力したいケースです。

こうした処理では、比較する数値の数だけforループなどの繰り返し処理を実行すれば、最小値・最大値が取得できます。

ただ、GASにおいては、上記のような処理を記述する必要はありません。

最大値を取得するメソッドと最小値を取得するメソッドが用意されており、メソッドを実行するだけで算出可能です。

最大値の取得はMath.maxメソッド

Google Apps Script(GAS)で、複数の数値データで最大値を取得したい場合は、Math.maxメソッドを利用します。

Math.max(num1,num2,…numN)

maxメソッドを実行すると、引数として指定した数値の中から、最も大きな値を戻り値として返してくれます。

Number型の数値であれば、整数だけでなく小数も指定できる上、負の数も比較可能です。

Math.maxメソッドでは引数の数は指定されていないため、たくさんの数値内から最大値を求めることができます。

最小値の取得はMath.minメソッド

Google Apps Script(GAS)で、複数の数値データで最小値を取得したい場合は、Math.minメソッドを利用します。

Math.min(num1,num2,…numN)

minメソッドを実行すると、引数として指定した数値の中から、最も小さな値を戻り値で返却します。

最大値を取得するmaxメソッドと同様に、Number型の数値であれば、整数だけでなく小数も指定できる上、負の数も比較可能です。

引数の数も2個以上の複数指定して、その中から最小値を選んでくれます。

最大値・最小値を取得するGASサンプルコード

実際にMath.max/minメソッドを使って、最大値・最小値を取得するGASサンプルコードを解説します。

function testMaxMin() {
  //同じ数字を引数にしてmax/minを取得
  const max = Math.max(8,5,3,9,20,13);
  const min = Math.min(8,5,3,9,20,13);
  //最大値と最小値をログ出力
  console.log('最大値:' + max + ',最小値:' + min);
}

Math.maxメソッドとMath.minメソッドに同じ引数を設定してconsole.logでログ出力しています。

Google Apps Script(GAS)でMath.max、Math.minメソッドで数値の最大値・最小値を求めるサンプルコード

それぞれのメソッドとも、引数は2個以上設定可能で、負の数にも対応しています。

Google Apps Script(GAS)でMath.max、Math.minメソッドでは、引数に指定する個数は2個以上で、負の数も指定可能

負の数として絶対値が大きいものが、最も小さい数字としてMath.minが判定してくれます。

配列内の要素の最大値・最小値はどう取得?

Google Apps Script(GAS)で最大値や最小値を取得したいパターンとして多いのが、配列データです。

数値型の配列の中で最も大きな値や最も小さな値が何か判定したいところです。

ただ、これまで紹介してきたMath.maxやMath.minではそのまま配列を引数にすることはできません。

そこで配列データに対して、最大値・最小値を求めるために以下のようにコードを記述します。

function arrayMaxMin() {
  const num = [8,5,3,9,20,13];
  //applyメソッドで配列の最大値・最小値を取得
  console.log('最大値:' + Math.max.apply(null,num));
  console.log('最小値:' + Math.min.apply(null,num));
}

applyメソッドは第1引数にnull、第2引数に配列を指定すると、それらを連続した引数としてMath.maxやMath.minメソッドに渡してくれます。

※第1引数は省略不可能なので、nullは必須であることを留意しておきましょう。

これによって、数値型の配列に対して、要素内の最大値・最小値を求めることができます。

Google Apps Script(GAS)で数値型の配列に含まれる要素についてapplyメソッドを使って、Math.max・Math.minで最大値・最小値を算出したサンプルコード実行結果

実際にGASサンプルコードを実行してみると、配列データの中から最大値/最小値を出力されています。

配列データを調べて最大値・最小値を取得するシーンは多いので、この方法は覚えておきましょう。

文字・文字列を引数指定しないよう注意

maxメソッド、minメソッドを使って最大値・最小値をGoogle Apps Script(GAS)で取得する際の注意点は、引数に文字列を指定しないことです。

文字や文字列を引数に指定した場合、それぞれのメソッドの戻り値がNaN(Not a Number)と非数になってしまいます。

Google Apps Script(GAS)のMath.maxやMath.minの引数に文字列が含まれると、NaN(Not a Number)が出力されてしまうので注意

そのため、max/minメソッドを利用する際には、引数に文字列が含まれないようにしましょう。

まとめ・終わりに

今回、Google Apps Script(GAS)で複数の数値の中から、最大値・最小値を取得する方法を紹介しました。

GASではMath.maxで引数の中から最も大きな値、Math.minで引数の中から最も小さな値を、メソッドの戻り値として得ることができます。

Math.max/Math.minともに2個以上の複数の引数を指定することができ、数値側であれば整数だけでなく、小数や負の数も指定可能です。

さらに「配列型の数値データから最大値・最小値を取得する」といった方法もapplyメソッドを利用することで簡単に取得できます。

数値の中から最大値・最小値を算出したい場合はmaxメソッドとminメソッドを活用してみてください。