5分でわかる!GASで費用合計を簡単に計算する方法


GASで合計計算を始めよう
まずは、必要なデータをスプレッドシートから取得し、その数値を全部足し合わせる方法を見ていこう。
スプレッドシートからデータを取得
GASを使って、スプレッドシートのデータを取得するのは簡単だ。まずは、シートを指定してデータを配列として取り出そう。
function getSheetData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
const data = sheet.getDataRange().getValues();
return data;
}
✅ SpreadsheetApp.getActiveSpreadsheet()で現在のスプレッドシートを取得し、getSheetByName(‘Sheet1’)で特定のシートを指定する。getDataRange().getValues()はシート全体のデータを2次元配列として取り出す。
費用合計を計算する
データを取得したら、次は合計を計算しよう。
function calculateTotalCost() {
const data = getSheetData();
let totalCost = 0;
for (let i = 1; i < data.length; i++) { // Assume first row is header
totalCost += parseFloat(data[i][1]); // Assuming costs are in the second column
}
Logger.log('Total Cost: ' + totalCost);
}
✅ calculateTotalCost()では、getSheetData()からデータを取得し、2行目から終わりまでループを回して合計を計算する。ここでは、費用が2列目にあると仮定し、parseFloat()で文字列を数値に変換して合計に加えている。

GASで合計計算をさらに便利に
応用して、フィルタを使った合計など、より高度な計算も可能だ。
特定の条件で合計を計算する
条件を設定し、特定の項目だけの合計を出す方法を見てみよう。
function calculateFilteredTotalCost() {
const data = getSheetData();
let filteredTotal = 0;
const categoryToInclude = 'Utilities';
for (let i = 1; i < data.length; i++) {
if (data[i][0] === categoryToInclude) { // Assume categories are in the first column
filteredTotal += parseFloat(data[i][1]);
}
}
Logger.log('Filtered Total Cost for ' + categoryToInclude + ': ' + filteredTotal);
}
✅ calculateFilteredTotalCost()では、特定のカテゴリが一致する行のみを合計している。ここでは、’Utilities’カテゴリをフィルタリングし、該当する行の2列目の費用を合計している。

練習問題:GASで費用合計を計算してみよう
1. スプレッドシートに「カテゴリ」「費用」の列を追加し、それぞれにデータを入力してみましょう。
2. 上記のスクリプトを使用して、全体の合計と“Travel”カテゴリの合計を取得してみてください。
解答・解説
こちらが解答スクリプトです。
function getSheetData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
const data = sheet.getDataRange().getValues();
return data;
}
function calculateTotalCost() {
const data = getSheetData();
let totalCost = 0;
for (let i = 1; i < data.length; i++) {
totalCost += parseFloat(data[i][1]);
}
Logger.log('Total Cost: ' + totalCost);
}
function calculateFilteredTotalCost() {
const data = getSheetData();
let filteredTotal = 0;
const categoryToInclude = 'Travel';
for (let i = 1; i < data.length; i++) {
if (data[i][0] === categoryToInclude) {
filteredTotal += parseFloat(data[i][1]);
}
}
Logger.log('Filtered Total Cost for ' + categoryToInclude + ': ' + filteredTotal);
}
解説:
– getSheetData()でスプレッドシートからデータを取得。
– calculateTotalCost()で全体の合計を計算。
– calculateFilteredTotalCost()で特定のカテゴリ(ここでは”Travel”)の合計を計算。この関数では、if文を使ってカテゴリをフィルタリングしています。
