
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関数と同じ結果を出せるようになる。


