LANG SELRCT

コードを書く場所についてはこちら

2018年2月26日月曜日

シート内の特定の列の最大値と最小値を取得する


関数でやると

最大値は
=max(A:A)

最小値は
=min(A:A)

のようにA列の中での最大値・最小値を出すということを
スクリプトで実現するコードの例です

この例では特定の列にある日付の最大値と最小値を取得します



コード.gs
function get_log(){
  var array = get_array();
  var max = get_max(array);
  var min = get_min(array);
  var max_date = format_date(max);
  var min_date = format_date(min);
  Logger.log([max_date, min_date]);
}

function get_array() {
  var sh = SpreadsheetApp.getActiveSheet();
  var last_row = sh.getLastRow();
  var range = sh.getRange("A2:A" + last_row)
  var values = range.getValues();
  var array = [];
  for(var i = 0; i < values.length; i++){
    array.push(values[i][0]);
  }
  return array;
}

function get_max(array) {
  array.sort(sorting);
  var max = array[array.length-1];
  return max;
}

function get_min(array) {
  array.sort(sorting);
  var min = array[0];
  return min;
}

function sorting(a, b){
  return a - b;
}

function format_date(date){
  return  Utilities.formatDate(new Date(date), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss")
}
意訳
この機能がやること
get_array()からarrayを取得して
get_max(array)に渡してmaxを取得して
get_min(array)に渡してminを取得して
max_dateをフォーマットして
min_dateをフォーマットして
ログに出す


この機能がやること
すくレッドシートを取得して
データが入っている最終行を取得して
範囲を指定して
値を取得して
arrayという空の配列を作って
値の数だけ以下を繰り返す
array配列に1つずつ値を追加する

出来上がったarrayを返す


この機能がやること
渡されたarrayの要素をsortingで昇順にソートして
配列の末尾(最大値)を取得して
返す


この機能がやること
渡されたarrayの要素をsortingで昇順にソートして
配列の先頭(最小値)を取得して
返す


この機能がやること
配列内の数値の大小を引き算した結果を返す(正の数か負の数かで配列の順番をソートする)


この機能がやること
渡されたdateを指定したタイムゾーンと形式でフォーマットして返す



関連記事

JavaScriptで配列内の最大値・最小値を取得したい