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

GASを使って、費用を簡単に合計できる方法ってあるのかな?数字を一つ一つ手計算するのはしんどいなぁ…
猫男
猫男
catman
catman
もちろんあるさ!楽に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文を使ってカテゴリをフィルタリングしています。

catman
catman
理解できたようだね。これで費用合計をスムーズに計算できるさ!