経営ダッシュボード、まだ手作業で作ってるの?

ミドリ: タツヤさん、毎月の経営会議の前になるとExcelでレポート作るのに丸1日潰れるんですけど、これなんとかならないですか……。

タツヤ: あるあるだね。売上データをコピペして、グラフ作って、前月比を計算して、体裁を整えて……。しかも「数字合ってる?」って毎回聞かれるやつでしょ。

ミドリ: まさにそれです。で、指摘されて修正してまたPDF出し直して……。

タツヤ: その作業、Google Apps Script(GAS)で全部自動化できる。しかもBIツールにお金かけなくても、Googleスプレッドシート+GASで経営ダッシュボードが無料で作れるんだよ。

ミドリ: 無料!? TableauとかLooker Studioじゃなくて?

タツヤ: もちろんそれらも優秀だけど、中小企業にとっては「すでに使ってるGoogleスプレッドシートの延長で動く」のが最大のメリット。学習コストも導入コストもほぼゼロ。

経営ダッシュボードで可視化すべき5つのKPI

ミドリ: まずどんなデータを可視化すればいいんですか?

タツヤ: 業種によって多少変わるけど、中小企業なら最低限この5つは押さえたい。

KPI意味更新頻度
月次売上・粗利収益の基本指標日次
キャッシュフロー手元資金の推移日次
受注残・パイプライン将来の売上見込み週次
顧客獲得コスト(CAC)新規顧客1件あたりの獲得費用月次
従業員1人あたり売上生産性の指標月次

ミドリ: これ全部、今はExcelの別々のファイルに散らばってます……。

タツヤ: そこが問題の根っこ。GASダッシュボードの最大の価値は、散在するデータを1つのシートに自動集約することなんだ。

GASダッシュボードのアーキテクチャ

ミドリ(thinking): 具体的にどういう仕組みで動くんですか?

タツヤ: 3層構造で考えるとわかりやすい。

第1層:データ収集

タツヤ(nodding): まずデータをどこから引っ張ってくるか。GASなら以下のデータソースに全部アクセスできる。

ミドリ: freeeのAPIからデータ取れるんですか!?

タツヤ: もちろん。freeeのAPIはRESTfulで、GASのUrlFetchAppで簡単に叩ける。OAuth2の認証もライブラリがあるから、10行程度で接続できる。

第2層:データ加工

タツヤ: 集めたデータをそのまま表示しても意味がない。加工して初めてKPIになる。

ミドリ: 異常値の自動検出って便利ですね。数字がおかしかったらすぐ気づける。

タツヤ: 経営判断で一番怖いのは「気づかないこと」だからね。

第3層:可視化と配信

タツヤ: 最後に可視化。スプレッドシートの標準チャート機能で十分だけど、GASを使うともっと柔軟にできる。

チャート種類用途GASでの実装
折れ線グラフ売上推移、トレンド把握Charts.newLineChart()
棒グラフ部門別比較、月別比較Charts.newBarChart()
円グラフ構成比の把握Charts.newPieChart()
スコアカード単一KPIの強調表示セル書式+条件付き書式
スパークラインセル内ミニグラフSPARKLINE関数

ミドリ(thinking): スパークラインって何ですか?

タツヤ: セルの中に小さな折れ線グラフを埋め込める機能。数字の横にトレンドが見えるから、一覧表の情報密度が一気に上がる。経営者に大人気の機能だよ。

実装ステップ:売上ダッシュボードを作ってみよう

ミドリ: 実際にどう作るか教えてください!

タツヤ: よし、売上ダッシュボードを例に4ステップで作っていこう。

ステップ1:データ収集スクリプト

タツヤ(nodding): まず複数のスプレッドシートからデータを集めるスクリプト。こんな構成になる。

function collectSalesData() {
  // 売上管理シートからデータ取得
  const salesSheet = SpreadsheetApp.openById('シートID');
  const salesData = salesSheet.getSheetByName('売上').getDataRange().getValues();

  // freee APIから経費データ取得
  const expenses = fetchFreeeExpenses();

  // ダッシュボードシートに書き込み
  const dashboard = SpreadsheetApp.getActiveSpreadsheet();
  updateDashboardData(dashboard, salesData, expenses);
}

ミドリ: シートIDってどこで確認するんですか?

タツヤ: スプレッドシートのURLの/d//editの間の文字列がシートID。複数部門のシートから自動で引っ張ってこれるんだ。

ステップ2:KPI計算ロジック

タツヤ: 集めたデータからKPIを計算する関数を作る。

function calculateKPIs(salesData, expenseData) {
  const currentMonth = getCurrentMonthData(salesData);
  const previousMonth = getPreviousMonthData(salesData);

  return {
    revenue: sum(currentMonth.sales),
    grossProfit: sum(currentMonth.sales) - sum(currentMonth.costs),
    growthRate: (sum(currentMonth.sales) / sum(previousMonth.sales) - 1) * 100,
    cac: sum(expenseData.marketing) / currentMonth.newCustomers
  };
}

ミドリ: 前月比の計算まで自動でやってくれるのか……。

ステップ3:自動更新トリガーの設定

タツヤ: ここがGASの真骨頂。時間ベースのトリガーで、ダッシュボードを毎朝自動更新できる。

function createDailyTrigger() {
  ScriptApp.newTrigger('updateDashboard')
    .timeBased()
    .everyDays(1)
    .atHour(7)    // 毎朝7時に実行
    .create();
}

ミドリ: 毎朝7時に自動更新! 出社したらもう最新データが揃ってるってことですか?

タツヤ(nodding): その通り。経営者が朝スマホでスプレッドシートを開いたら、昨日までの数字が全部反映されてる。

ステップ4:通知の自動送信

タツヤ: さらにSlackやメールで自動通知も組める。

function sendDailyReport() {
  const kpis = calculateKPIs();
  const message = `📊 本日のKPIサマリー\n`
    + `売上: ¥${kpis.revenue.toLocaleString()}\n`
    + `粗利率: ${kpis.grossMargin}%\n`
    + `前月比: ${kpis.growthRate > 0 ? '+' : ''}${kpis.growthRate}%`;

  // Slack通知
  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, {
    method: 'post',
    payload: JSON.stringify({ text: message })
  });

  // メール通知
  MailApp.sendEmail('[email protected]', '日次KPIレポート', message);
}

ミドリ: Slackに毎朝KPIが流れてくるの、めちゃくちゃ便利ですね。

タツヤ: 異常値があったときだけ通知する設定もできるよ。「売上が前日比20%以上減った場合だけアラート」みたいな。ノイズを減らして本当に重要な情報だけ届ける。

導入効果を数字で見る

ミドリ: 実際にGASダッシュボードを導入すると、どれくらい効果あるんですか?

タツヤ: 従業員30名規模の企業での実績データをまとめたよ。

指標導入前導入後改善効果
月次レポート作成時間8時間/月0時間(自動生成)100%削減
データ集計の手作業週3時間週0.5時間(確認のみ)83%削減
経営会議の準備時間4時間/回30分/回87%削減
データの鮮度月1回更新毎日自動更新リアルタイム化
数値の転記ミス月2〜3件0件100%削減
意思決定のスピード翌月判明当日把握30日→0日

ミドリ: レポート作成がゼロ時間って衝撃ですね……。

タツヤ: 年間で計算すると、レポート作成だけで年96時間の削減。時給3,000円として約29万円。しかもGASの開発コストは初期に20〜30時間程度だから、2〜3ヶ月で元が取れる計算になる。

運用の注意点

ミドリ: 気をつけるべきことはありますか?

タツヤ: 3つある。まず指標は最大10個に絞ること。50個も並べると誰も見なくなる。次にKPIの定義を明文化すること。「売上」が受注ベースなのか入金ベースなのか、部門で認識がズレてるとダッシュボードへの信頼が崩れる。最後にメンテナンス体制。作った人が退職してスクリプトが放置されるケースが多いから、最低2人がメンテできるようにしておくこと。

ミドリ: GASの実行制限も気になります。

タツヤ(smiling): 無料アカウントだと1回の実行が6分以内という制限がある。超えそうなら処理を分割して複数トリガーでリレーする方法があるけど、中小企業のダッシュボードなら大抵6分以内に収まるよ。

まとめ:経営判断のスピードを変える

ミドリ: 今日の話をまとめると、どうなりますか?

タツヤ: GASで経営ダッシュボードを作る意味は、レポート作成の自動化だけじゃない。本当の価値は経営判断のスピードが変わること。月に1回しか見えなかったデータが毎日見える。異常があれば即座にアラートが飛ぶ。

ミドリ: 「先月の数字が悪かった」じゃなくて、「今日の数字がおかしいから今すぐ対策しよう」になるってことですね。

タツヤ(nodding): その通り。しかもGoogleスプレッドシートだから、スマホでもタブレットでも見られる。経営者がいつでもどこでもリアルタイムの数字を確認できる環境が、追加コストゼロで手に入る。

ミドリ: BIツールに月額数万円払う前に、まずGASで試してみるのが正解ですね。

タツヤ: まさに。GASでやれることの限界が見えてから、Looker StudioやTableauに移行しても遅くない。スモールスタートが大事だよ。


次のアクション

GASダッシュボードの構築を始めてみましょう。