スプレッドシートで作る業務ダッシュボード

GASスプレッドシート業務自動化
スプレッドシートで作る業務ダッシュボードのサムネイル

スプレッドシートで作る業務ダッシュボード

こんにちは、GASおじです。今回は中小企業の経営者さんやフリーランスの方に向けて、Google スプレッドシートとGoogle Apps Script(以下GAS)を使った業務ダッシュボードの作り方を解説します。おじさんもSaaS課金にシビアなので、追加料金なしで効率化できる方法を丁寧にお伝えしますよ。


業務ダッシュボードをスプレッドシートで作る理由

まずはなぜスプレッドシートでダッシュボードを作るのか。クラウドのBIツールは便利ですが、月々のサブスク料金がバカになりません。Google スプレッドシートはGoogleアカウントの利用枠内で使えるので、追加の専用SaaS料金なしに始められます。ただしApps Scriptにはクォータや実行上限があるので注意が必要です。

おじさんの経験上、日々の売上や顧客データを「その場で更新」ではなく、日時付きの新しいシートやファイルに書き出す運用がベター。誤操作やデータ破損のリスクを減らし、バックアップやロールバックもしやすくなります。


初期設定と必要な権限

スプレッドシートの準備

業務データを入力する元データシートを用意してください。これは既存の売上や顧客管理シートでもOKです。

Google Apps Scriptのプロジェクト作成

  1. スプレッドシートのメニューから「拡張機能」→「Apps Script」を開き、新規プロジェクトを作成。
  2. スクリプトエディタにコードを書きます。

必要権限

  • スプレッドシートの読み書き権限
  • ドライブのファイル作成権限(日時付きの新規ファイル生成に必要)

初回実行時に認証画面が出るので、必ず許可してください。


バッチ書き込みと入力検証のポイント

データを一件ずつ更新するのは非効率。GASでは配列データをまとめて書き込む「batch write」がパフォーマンス向上に効果的です。

また、業務データは誤入力が致命的なので、「入力検証ルール」をシートに設定してミスを防ぎましょう。以下は例として、元データの範囲を読み込み、入力チェックを行い、不備のないデータだけを新規日時付きシートに書き出すコードです。

function createDashboardSnapshot() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName('業務データ'); // 元データシート名
  if (!sourceSheet) {
    throw new Error('「業務データ」シートが見つかりません');
  }

  // 元データ範囲を取得(ヘッダー含む)
  const lastRow = sourceSheet.getLastRow();
  const lastCol = sourceSheet.getLastColumn();
  if (lastRow < 2) {
    Logger.log('データがありません');
    return;
  }
  const dataRange = sourceSheet.getRange(2, 1, lastRow - 1, lastCol);
  const data = dataRange.getValues();

  // 入力検証例:売上金額は数値かつ0以上であること
  const validData = data.filter(row => {
    const amount = row[2]; // 3列目が売上金額と仮定
    return typeof amount === 'number' && amount >= 0;
  });

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

  // 新規シート名を日時付きで作成
  const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
  const newSheetName = `ダッシュボード_${timestamp}`;
  const newSheet = ss.insertSheet(newSheetName);

  // ヘッダーをコピー
  const header = sourceSheet.getRange(1, 1, 1, lastCol).getValues();
  newSheet.getRange(1, 1, 1, lastCol).setValues(header);

  // バッチ書き込みでデータを貼り付け
  newSheet.getRange(2, 1, validData.length, lastCol).setValues(validData);

  // 簡易バックアップ用にコピーを別ファイルとして作成も可能
  // ここでは省略

  Logger.log(`新規ダッシュボードシート「${newSheetName}」を作成しました`);
}

このコードは既存の「業務データ」シートの情報を読み込み、売上金額が正の数値だけを抽出。新しい日時付きシートを作ってヘッダーと共に書き込みます。元データは一切変更しません。


バックアップとロールバックの運用方法

データを直接上書きしない運用では、過去のダッシュボードも残るため「いつでも前の状態に戻せる」のが強みです。さらにGoogleドライブのバージョン管理やゴミ箱機能を活用すれば誤削除からの復元も可能。

バックアップをファイル単位で作成したい場合は、スクリプトで「スプレッドシートのコピーを作成」し、ファイル名に日時を付けて保存する方法もあります。その際も既存データは消さずに済みます。


コスト削減効果の試算

仮に手作業で1日に30分かかっていた業務報告作成を、GASで自動化し10分に短縮できたとします。

  • 時間削減:20分/日
  • 1時間あたりの人件費:2,000円(仮定)
  • 月間稼働日数:20日

計算式:20分 ÷ 60分 × 2,000円 × 20日 = 約13,333円/月のコスト削減

もちろんこれは単純計算の例ですが、追加SaaS料金なしでここまで効率化できるのは大きいですよね。


installable triggerの設定と復元手順

自動で定期的にダッシュボードを更新したい場合は、installable trigger(インストール型トリガー)を利用しましょう。

  • スクリプトエディタの「トリガー」メニューから新規作成
  • 関数名に「createDashboardSnapshot」を指定
  • 時間主導型トリガーで毎日や毎時など好きな間隔に設定

復元手順としては、もし問題が起きたら日時付きシートやファイルから復元可能なので安心です。最悪の場合もGoogleドライブのバージョン管理やゴミ箱から戻せます。


まとめ

  • 業務ダッシュボードはGoogle スプレッドシートとGASで手軽に作成可能
  • 既存データを直接削除・上書きせず、新規日時付きシート・ファイルへ書き出す運用が安全
  • 入力検証やbatch writeで信頼性と効率を両立
  • Googleアカウントの利用枠内で追加SaaS料金なし(Apps Scriptのquotaあり)
  • installable triggerで自動化もできる

業務効率化は積み重ねが大事。おじさんのノウハウを活用して、コスト削減につなげてくださいね。


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