SUM関数のように計算する方法
Google Apps Script(以下GAS)でgetRangeの範囲をSUM関数のように計算したいことがある。
例えばこのようなシート上でA1:B3の合計値を計算したい場合は=SUM(A1:B3)で簡単に計算できるがGASはSUM関数を直接使用して計算できないため、自分で計算式を作成する必要がある。
SUM関数のように計算式
GASでgetRangeの範囲をSUM関数のように計算する計算式は以下のようになる。
function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var col = 2; var total = sheet.getRange(1, 1, 3, col).getValues().reduce(function(a, c) { var tmp = 0; for (var i = 0; i < col; i++) { if (+c[i]) tmp += c[i]; } return a + tmp; }, 0); Logger.log(total); // => 10 }
getValues()で取得した値は2次元配列になるため、reduceを使用している内部でさらにforでループさせて加算を行うことでSUM関数と同じ結果を出せるようになる。