GAS×Sheet.getDataRangeで財務を効率化!予算管理・経費精算を自動化
本記事では、Google Apps Script(GAS)とSheet.getDataRange()関数を組み合わせて、財務・会計業務、特に予算管理と経費精算を自動化する方法を解説します。日々の煩雑な作業から解放され、より戦略的な業務に集中できるようになるでしょう。
Sheet.getDataRange()とは?
Sheet.getDataRange()は、Googleスプレッドシートで**データが入力されている範囲全体**を取得するためのGAS関数です。この関数を使うことで、スプレッドシート内のデータを簡単に配列として読み込むことができます。
基本的な使い方
Sheet.getDataRange()は、Sheetオブジェクトに対して使用します。例えば、アクティブなシートのデータを取得するには、以下のコードを使用します。
function getActiveSheetData() {
// アクティブなシートを取得
const sheet = SpreadsheetApp.getActiveSheet();
// データ範囲を取得
const range = sheet.getDataRange();
// データ範囲の値を2次元配列として取得
const values = range.getValues();
// 取得したデータをログに出力(確認用)
Logger.log(values);
}
このコードを実行すると、アクティブなシートのデータがログに出力されます。
予算管理への応用
予算管理では、月ごとの収入、支出、残高などをスプレッドシートで管理することが一般的です。Sheet.getDataRange()を使用することで、これらのデータをGASで簡単に処理し、予算達成率の算出やグラフの作成を自動化できます。
実装例:予算実績比較
スプレッドシートのA列に費目、B列に予算、C列に実績が入力されているとします。以下のコードは、予算と実績を比較し、達成率を計算します。
function compareBudgetActual() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
// ヘッダー行をスキップ
for (let i = 1; i < data.length; i++) {
const budget = data[i][1]; // B列:予算
const actual = data[i][2]; // C列:実績
// 達成率を計算
const achievementRate = (actual / budget) * 100;
// D列に達成率を書き込む
sheet.getRange(i + 1, 4).setValue(achievementRate);
}
}
このコードを実行すると、D列に各費目の予算達成率が表示されます。
経費精算への応用
経費精算では、従業員が提出した経費申請データをスプレッドシートで管理し、承認や集計を行います。Sheet.getDataRange()を使用することで、これらのデータをGASで効率的に処理し、集計作業を自動化できます。
実装例:経費集計
スプレッドシートのA列に申請日、B列に申請者、C列に費目、D列に金額が入力されているとします。以下のコードは、申請者ごとの経費を合計します。
function summarizeExpenses() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
// ヘッダー行をスキップ
const expenses = {};
for (let i = 1; i < data.length; i++) {
const applicant = data[i][1]; // B列:申請者
const amount = data[i][3]; // D列:金額
// 申請者ごとの経費を合計
if (expenses[applicant]) {
expenses[applicant] += amount;
} else {
expenses[applicant] = amount;
}
}
// 結果をログに出力
Logger.log(expenses);
// 結果をシートに書き出す例(E列とF列)
let row = 2; // 出力開始行
for (const applicant in expenses) {
sheet.getRange(row, 5).setValue(applicant); // E列:申請者
sheet.getRange(row, 6).setValue(expenses[applicant]); // F列:合計金額
row++;
}
}
このコードを実行すると、申請者ごとの経費合計がログに出力され、E列とF列に書き込まれます。
請求書作成への応用
請求書作成において、顧客情報や請求項目をスプレッドシートで管理している場合、Sheet.getDataRange()を利用してこれらの情報を取得し、請求書を自動生成することが可能です。
実装例:請求書データ抽出
スプレッドシートのA列に顧客ID、B列に顧客名、C列に請求金額が入力されているとします。このデータを元に請求書を作成するためのデータ抽出を行います。
function extractInvoiceData() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
// ヘッダー行をスキップ
const invoiceData = [];
for (let i = 1; i < data.length; i++) {
const customerId = data[i][0]; // A列:顧客ID
const customerName = data[i][1]; // B列:顧客名
const amount = data[i][2]; // C列:請求金額
// 請求データオブジェクトを作成
const invoice = {
customerId: customerId,
customerName: customerName,
amount: amount
};
invoiceData.push(invoice);
}
// 抽出した請求データをログに出力
Logger.log(invoiceData);
}
このコードを実行すると、各顧客の請求データがオブジェクトとして配列に格納され、ログに出力されます。このデータを元に、Googleドキュメントなどを使用して請求書を自動生成する処理を追加できます。
よくある問題とトラブルシューティング
- データが正しく取得できない:
getDataRange()で取得される範囲が期待通りか確認してください。空白行や列が含まれていないか確認しましょう。 - エラーが発生する:スクリプトエディタのエラーメッセージを確認し、型の間違いや未定義の変数がないか確認してください。
カスタマイズ方法と応用例
- 日付によるフィルタリング:
getDataRange()で取得したデータに対して、日付でフィルタリング処理を追加することで、特定の期間のデータのみを処理できます。 - 条件付き書式設定:
getDataRange()で取得したデータに基づいて、スプレッドシートの条件付き書式設定を自動的に変更できます。
まとめ
GASとSheet.getDataRange()を組み合わせることで、予算管理、経費精算、請求書作成などの財務・会計業務を大幅に効率化できます。この記事で紹介したコード例を参考に、ぜひご自身の業務に合わせた自動化を試してみてください。

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう