GASで経費精算の自動化とコスト管理を効率化する

GAS業務自動化コスト削減
GASで経費精算の自動化とコスト管理を効率化するのサムネイル

GASで経費精算の自動化とコスト管理を効率化する

こんにちは、GASおじです。今日は中小企業の経営者やフリーランスの皆さんに向けて、「経費精算の自動化」と「コスト管理の効率化」について話そうと思う。SaaSの課金はしっかり管理しないと、知らないうちにコストが膨らむからね。そこでGoogle Apps Script(以下GAS)を活用して、できるだけ無駄なく効率的に経費精算を自動化する方法を紹介するよ。


経費精算の現場でよくある課題

経費精算といえば、領収書の管理、申請の承認、集計など面倒な作業が山積み。手作業だと入力ミスやデータの見落としも多いし、何より時間がかかる。外部の経費精算SaaSを使うと便利だけど、毎月のサブスク料金が積み重なってコストが高くなるのも悩みの種。

そこでGASで自社のGoogle Workspace環境内で自動化すれば、追加のSaaS料金は発生しない。Googleアカウントの利用枠内で使えるから、コスト削減に繋がる。ただし、GASの実行時間やAPI呼び出し回数にはquota制限があるので注意が必要だ。


GASで経費精算自動化のポイント

おじさんが特に気をつけているのは、既存データをその場で消す処理は絶対に避けること。誤操作やエラーが起きたときのリカバリが難しいからね。だから、経費データは新しい日時付きのシートやスプレッドシートファイルに書き出すようにしている。

また、入力データの検証は必須。日付や金額の形式が正しいかどうかをチェックしてから処理を進める。さらに、まとめて書き込むバッチ処理を使い、API呼び出し回数を抑えるのも大事だ。

最後にバックアップとロールバックの仕組みも用意しておく。自動化の恩恵を受けつつ、安心して使える環境を作ろう。


具体的なGASコード例

下記は経費精算データを受け取り、入力検証した上で新しい日時付きスプレッドシートに書き出すサンプルコードだ。既存データの上書きや削除は一切せず、新規ファイル作成で結果を残す方式だから安全だよ。

function automateExpenseTracking() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const inputSheet = ss.getSheetByName('経費入力');
  if (!inputSheet) {
    Logger.log('経費入力シートが見つかりません');
    return;
  }

  const data = inputSheet.getDataRange().getValues();
  const headers = data.shift();

  // 入力検証用関数
  function isValidExpense(row) {
    const date = row[0];
    const description = row[1];
    const amount = row[2];

    if (!(date instanceof Date)) return false;
    if (typeof description !== 'string' || description.trim() === '') return false;
    if (typeof amount !== 'number' || amount <= 0) return false;

    return true;
  }

  // 有効な経費データだけ抽出
  const validExpenses = data.filter(isValidExpense);

  if (validExpenses.length === 0) {
    Logger.log('有効な経費データがありません');
    return;
  }

  // 新規スプレッドシート作成(日時付き)
  const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
  const newSpreadsheet = SpreadsheetApp.create(`経費精算_${timestamp}`);
  const newSheet = newSpreadsheet.getActiveSheet();
  newSheet.setName('経費データ');

  // ヘッダー書き込み
  newSheet.getRange(1, 1, 1, headers.length).setValues([headers]);

  // バッチ書き込み
  newSheet.getRange(2, 1, validExpenses.length, headers.length).setValues(validExpenses);

  Logger.log(`経費データを新規スプレッドシートに出力しました: ${newSpreadsheet.getUrl()}`);
}

初期設定と必要権限、その他注意点

  1. 初期設定

    • 「経費入力」というシートを用意し、1行目に「日付」「内容」「金額」などのヘッダーを必ず入れておくこと。
    • GASエディタに上記コードをコピーし、プロジェクトとして保存。
  2. 必要権限

    • スプレッドシートの読み書き権限が必要。
    • 新しいスプレッドシートを作成するための権限も必要。
  3. 個人情報の取扱い

    • 経費データは個人情報や機密情報を含む場合が多いので、Google Workspaceのアクセス権限管理を厳重に。
    • スクリプトのアクセス範囲を最小限にし、不必要な権限を与えないこと。
  4. installable triggerの設定

    • 毎月や毎週の定期実行が必要なら、GASのinstallable triggerから時間主導型トリガーを設定しよう。
    • 例:月初に経費精算データをまとめて処理するなど。
  5. 復元手順

    • 既存データを直接消さない設計なので復元は容易。
    • 万が一ミスがあっても、元ファイルはそのまま残るので手動での確認・修正が可能。
    • 新規作成されるスプレッドシートのURLはログ出力されるので、管理者が確認して必要ならロールバックできる。

コスト削減効果の仮定と計算

例として、外部の経費精算SaaSを月額5,000円で5人のメンバーが使っている場合を考えよう。

  • SaaS料金:5,000円 × 5人 = 25,000円/月
  • GASを使いGoogle Workspace内で自動化すれば、追加SaaS料金はゼロ(Googleアカウントの利用枠内での利用。ただしApps Scriptの実行上限とquotaは存在)
  • 年間コスト削減額 = 25,000円 × 12ヶ月 = 300,000円

もちろん、GASの実行時間やAPI呼び出し制限の範囲内で業務量が収まることが前提だ。もし処理が重くなれば分割や最適化も必要になるので注意しよう。


経費精算とコスト管理の自動化にGASを活用すれば、無駄なSaaS料金を削減しつつ、業務効率も大幅アップが狙える。中小企業やフリーランスにとっては、初期コストやランニングコストを抑えつつDXを進める強力な武器になるはずだ。

興味がある方はぜひ試してみてくれ。GASの使い方や応用方法はまだまだたくさんあるので、今後も役立つ情報をお届けしていくよ。


GASおじラボで500ツール使い放題 →