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

スプレッドシートで作る業務ダッシュボード
こんにちは、GASおじです。今回は中小企業の経営者さんやフリーランスの方に向けて、Google スプレッドシートとGoogle Apps Script(以下GAS)を使った業務ダッシュボードの作り方を解説します。おじさんもSaaS課金にシビアなので、追加料金なしで効率化できる方法を丁寧にお伝えしますよ。
業務ダッシュボードをスプレッドシートで作る理由
まずはなぜスプレッドシートでダッシュボードを作るのか。クラウドのBIツールは便利ですが、月々のサブスク料金がバカになりません。Google スプレッドシートはGoogleアカウントの利用枠内で使えるので、追加の専用SaaS料金なしに始められます。ただしApps Scriptにはクォータや実行上限があるので注意が必要です。
おじさんの経験上、日々の売上や顧客データを「その場で更新」ではなく、日時付きの新しいシートやファイルに書き出す運用がベター。誤操作やデータ破損のリスクを減らし、バックアップやロールバックもしやすくなります。
初期設定と必要な権限
スプレッドシートの準備
業務データを入力する元データシートを用意してください。これは既存の売上や顧客管理シートでもOKです。
Google Apps Scriptのプロジェクト作成
- スプレッドシートのメニューから「拡張機能」→「Apps Script」を開き、新規プロジェクトを作成。
- スクリプトエディタにコードを書きます。
必要権限
- スプレッドシートの読み書き権限
- ドライブのファイル作成権限(日時付きの新規ファイル生成に必要)
初回実行時に認証画面が出るので、必ず許可してください。
バッチ書き込みと入力検証のポイント
データを一件ずつ更新するのは非効率。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で自動化もできる
業務効率化は積み重ねが大事。おじさんのノウハウを活用して、コスト削減につなげてくださいね。