
【Claude】 BIツール風のダッシュボードを、Google Drive の Excel を更新するだけで動かしてみた!
はじめに
こんにちは!コンサルティング部のヒスです。
「店舗別の週次売上を Excel で管理していて、毎月ダッシュボードを作り直すのが大変…」という場面は、どの会社にもあると思います。
先日、Claude の初心者向け勉強会の応用編として、ダッシュボード機能を紹介しました。今回はその題材を、Claude の Artifact(ダッシュボード)で、Google Drive 上の Excel ファイルの数値を書き換えると、グラフ・KPI・コメントまで変わるダッシュボードを作ってみました。画面側には数値を一切書いておらず、すべて Excel から読み込んでいます。
この記事では、次のことを紹介します。
- 作ったダッシュボードの見た目と、「Excel を直すと何が変わるか」の実演
- 数値が画面に出るまでの仕組み(データセット → loader → calc → 描画)
- 作っていて気をつけた点(列順への依存、閲覧者ごとの権限など)
作ったもの
「10月 店舗別売上ダッシュボード」です。6店舗(A〜F店)× 10月第1〜4週の売上を、部門別(食品・衣料・住居余暇)、前年同週の売上、客数とともに Excel で管理し、それを読み込んで次の画面を出します。
- KPI カード:全店の10月売上、全店の前年比、要注目の店舗数、前年比が最も高い/低い店舗
- 積み上げ棒グラフ+折れ線:店舗ごとの部門別売上(棒、左軸)と前年比(折れ線、右軸)
- 傾向テーブル:店舗ごとの合計・前年比・週次変化・傾向・注目度、自動生成したコメントと「理由の仮説」
- 店舗別の週次推移:店舗ごとの小さな折れ線グラフ(前年同週を点線で比較、要注目の店舗は赤)



作り方:Claude に頼んだこと
コードは書いていません。Claude のチャットに、次の依頼文を入力しただけです(フォルダ名・ファイル名は置き換えてください)。
Googleドライブの「マイドライブ/○○/売上データ_店舗別週次」を読んで、
10月の合計を店舗別に集計し、部門別(食品・衣料・住居余暇)の売上を積み上げ縦棒に。
10月の前年比は折れ線にして右側の軸に表示。棒は店舗ごとに1本で。
グラフの下に、店舗ごとの傾向と、気になる店舗があれば理由の仮説も表示。
元データの数値に連動して変わるように。
ダッシュボードにして。
依頼文は、次の4つの要素に分けて考えると書きやすくなります。
| 要素 | 依頼文での書き方 |
|---|---|
| ① データの場所 | Googleドライブの「マイドライブ/○○/売上データ_店舗別週次」を読んで、 |
| ② つくりたいグラフ | 10月の合計を店舗別に集計し、部門別(食品・衣料・住居余暇)の売上を積み上げ縦棒に。10月の前年比は折れ線にして右側の軸に表示。棒は店舗ごとに1本で。 |
| ③ 連動させたい文章 | グラフの下に、店舗ごとの傾向と、気になる店舗があれば理由の仮説も表示。元データの数値に連動して変わるように。 |
| ④ 完成形 | 「ダッシュボードにして」 |
ポイントは2つです。
- 事前に Google Drive のコネクタを接続しておく(接続していないと、Drive 上のファイルを読めません)。
- 「元データの数値に連動して変わるように」と明示する。これがないと、読み込んだ数値を画面に書き込んだだけの、更新されないグラフになる可能性があります。
前提条件・検証環境
- Claude(Artifact のダッシュボード機能)
- Google Drive コネクタが Claude 側で利用できること
- 売上データの Excel(.xlsx)を Google Drive に置いてあること
- 閲覧者がそのファイルを開ける権限を持っていること
使った Excel の列構成(ダミー)
| 店舗 | 週 | 食品(千円) | 衣料(千円) | 住居余暇(千円) | 売上合計(千円) | 前年同週の売上(千円) | 前年比(%) | 客数 |
|---|---|---|---|---|---|---|---|---|
| A店 | 10月第1週 | 672 | 288 | 240 | 1200 | 1188 | 101 | 5200 |
| A店 | 10月第2週 | 678 | 290 | 242 | 1210 | 1186 | 102 | 5243 |
| … | … | … | … | … | … | … | … | … |
前年比の列は Excel の数式で計算しています(H2 は =ROUND(F2/G2*100,0))。ダッシュボードは、売上合計の列も前年比の列も使いません。

やってみた
1. 書き換える前のダッシュボード
まず、C店 10月第4週の食品が 782 の状態でダッシュボードを開きます。サンプルの C店は、食品がほぼ横ばいのまま、衣料が第1週の 420 から第4週の 243 まで大きく減っていて、店全体の売上が下がっています。
棒グラフを見ると、C店だけ折れ線(右軸の前年比)が 91.4% まで落ち込んでいるのがわかります。

下の傾向テーブルでは、C店の行がこうなっています。
| 項目 | C店の表示 |
|---|---|
| 10月合計 | 5,591 千円 |
| 前年比 | 91.4% |
| 週次変化 | −14.6% |
| 傾向 / 注目 | 下降傾向 / 要注目 |
| コメント | 落ち込みの中心は衣料(-42.1%)。主因は客数(客数-14.7%/客単価+0.1%)。 |
| 理由の仮説 | 秋冬衣料の立ち上がり遅れ(気温要因)、売場改装・棚割変更、近隣競合の販促の影響の可能性。来店客数の減少が大きいため、チラシ・競合出店・立地環境など集客面の確認も必要。 |

衣料の落ち込みが一番大きく、客数の減り方が売上の減り方とほぼ同じで、客単価はほとんど動いていません。そこから「来店客が減っている」ことが主因だと読めます。
2. Excel の数値を書き換える
次に、Google Drive 上の Excel で、C店 10月第4週の食品(C13 のセル)を 782 から 2000 に書き換えます。ファイルは .xlsx のまま Drive 上で開いて編集・保存できます。
前年比の列(H 列)は数式(H2 は =ROUND(F2/G2*100,0))ですが、ダッシュボードは売上合計の列も前年比の列も使わず、部門別の値から計算し直しています。そのため、書き換えるのは食品の1セルだけです。

3. ダッシュボードを開き直す
ダッシュボードを開き直すと、数字が次のように変わりました。
| 項目 | 書き換え前 | 書き換え後 |
|---|---|---|
| 全店 10月売上 | 25,606 千円 | 26,824 千円 |
| 全店 前年比 | 99.6% | 104.4% |
| 要注目の店舗数 | 1(C店) | 0 |
| 前年比が最も高い店舗 | F店(107.5%) | C店(111.3%) |
| 前年比が最も低い店舗 | C店(91.4%) | B店(99.2%) |
| C店の前年比 | 91.4% | 111.3% |
| C店の判定 | 要注目 | 好調 |
画面の一番上にある一行の要約も、「10月の全店売上は26,824千円(前年比104.4%)。要注目の店舗はありません。好調な店舗はC店・F店。」に変わりました。棒グラフでは、C店が一番高い棒になり、折れ線も 111.3% まで上がっています。

傾向テーブルの C店の行は、次のように変わりました。
| 項目 | 書き換え前 | 書き換え後 |
|---|---|---|
| 10月合計 | 5,591 千円 | 6,809 千円 |
| 前年比 | 91.4% | 111.3% |
| 週次変化 | −14.6% | +66.6% |
| 傾向 / 注目 | 下降傾向 / 要注目 | 上昇傾向 / 好調 |
| コメント | 落ち込みの中心は衣料(-42.1%)。主因は客数(客数-14.7%/客単価+0.1%)。 | 伸びの中心は食品(+156.4%)。主因は客単価(客数-14.7%/客単価+95.2%)。 |
| 理由の仮説 | 秋冬衣料の立ち上がり遅れ、売場改装・棚割変更、近隣競合の販促の影響の可能性。来店客数の減少が大きいため、集客面の確認も必要。 | 特売・販促や生鮮の品揃え強化が奏功した可能性。 |

店舗別の週次推移でも、C店のグラフは第3週から第4週にかけて急に上がり、第4週は 2,499 千円になって、前年同週の点線を大きく上回っています。ラベルも「好調」に変わりました。

食品の1セルを書き換えただけで、棒グラフの高さ、折れ線、KPI カード、上部の要約、判定、コメント、理由の仮説まで、まとめて変わりました。
ひとつ気になったのは、衣料が -42.1% 落ちていることは何も変わっていないのに、C店が「好調」と判定されたことです。今回の判定は店舗全体の合計だけを見ているので、食品が大きく伸びると、衣料の落ち込みが隠れてしまいます。部門ごとの評価も見たい場合は、データと画面の設計を見直す必要があります。
ダッシュボードの数値をクリックすると、その数字を出したクエリ(Drive のどのファイルを読んだか)を確認でき、「この数字はどこから来たのか」を後から追えます。

仕組み
ここからは、なぜ「Excel を直すだけ」で済むのかを説明します。
全体像
Google Drive の Excel
│ read_file_content(Drive コネクタの1回の呼び出し)
▼
sales(データセット)
│ loader:テキスト → 行データ(店舗, 週, 食品, 衣料, 住居余暇, 前年同週, 客数)
├──▶ store_summary(calc)… 店舗ごとの合計・前年比・週次変化・判定・コメント
│ └──▶ totals(calc)… 全店合計・最高/最低店舗・要約文
└──▶ weekly(calc)… 店舗×週の合計と前年比
▼
画面(KPI/積み上げ棒+折れ線/テーブル/ミニ折れ線)
ポイント1:画面に数字を直書きしない
ダッシュボードのページ(HTML/JS)には、売上の数字が一つも書かれていません。画面の数値は data-source で「どのデータセットのどの列か」を指す印が付いていて、スクリプトが値を流し込みます。
<div class="lx-big" data-source="totals" data-field="total" data-row="0">—</div>
初期表示は — で、データが読み込まれると数値に置き換わります。「画面の数字がどのデータ由来か」が一目でわかるので、あとから数字を疑うときも追いやすいです。
ポイント2:データセットは「Drive のファイルを読む1回の呼び出し」
売上データのデータセットは、Drive コネクタの read_file_content を、ファイル ID を指定して呼ぶだけの定義です(ID はダミー)。
{
"title": "店舗別週次売上",
"description": "店舗・週ごとの部門別売上(千円)、前年同週の売上(千円)、客数。Google Drive の Excel を開くたびに読み直します。",
"source": {
"kind": "query",
"connector": "Google Drive",
"tool": "read_file_content",
"args": { "fileId": "<FILE_ID>" }
}
}
「ファイルを取り込んで画面に埋め込む」のではなく、「開くたびにコネクタ経由で読みに行く」形です。そのため、Excel を直せばデータが古いまま残ることはありません。
ここで気をつけたいのが権限です。この種の「読み取りクエリ」は、閲覧者それぞれの権限で実行されます。ダッシュボードを共有しても、閲覧者が元の Excel を開けなければデータは出ません。共有するときは、Excel 側の共有設定もセットで考える必要があります。なお、完成直後のダッシュボードは自分だけが閲覧でき、「共有」で相手を選ぶ形です。権限のないアカウントで開いた場合、コード上は「Failed to load」の表示になります。
ポイント3:loader で「テキスト → 行データ」に直す
Drive から返ってくる Excel の中身はテキストです。これを行データにするのが loader です。今回は正規表現で、店舗,週,食品,衣料,住居余暇,売上合計,前年同週,前年比,客数 の9列を拾っています(実際のコードを短くしたものです)。
dash.loader('sales', {
description: 'Google Driveの売上データ(xlsx)のテキストを、店舗・週ごとの行に直す。売上合計列は使わず、部門の値から後段で合計する。',
fn: ({ answer }) => {
const text = typeof answer === 'string' ? answer : (answer && answer.fileContent) || '';
const re = /([^\s,]+),([^\s,]+),(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?)/g;
const rows = [];
let m;
while ((m = re.exec(text)) !== null) {
rows.push({
store: m[1], week: m[2],
food: Number(m[3]), apparel: Number(m[4]), living: Number(m[5]),
prev_year: Number(m[7]), customers: Number(m[9])
});
}
if (!rows.length) throw new Error('売上データの行を読み取れませんでした。ファイルの列構成を確認してください。');
return { columns: ['store', 'week', 'food', 'apparel', 'living', 'prev_year', 'customers'], rows };
}
});
ここで大事なのが次の2点です。
- 「売上合計」列は使わず、部門の値から合計し直す:Excel の数式列は、保存のタイミングや読み込み方によって古い値が入ることがあります。元になる部門別の値だけを信じて、合計はダッシュボード側で計算します。
- 0行だったらエラーにする:列構成が変わって1行も読めなかったときに、「空のグラフ」ではなく「どこを確認すべきか」を示すエラーにしています。
ポイント4:calc で「集計と判定」を分ける
集計は loader ではなく calc に分けています。sales から store_summary(店舗ごと)、さらに totals(全店)と、段階的に作ります。
| calc | 入力 | 中身 |
|---|---|---|
store_summary |
sales |
店舗ごとの10月合計、前年比、週次変化、傾向・注目度、コメント、理由の仮説 |
totals |
store_summary |
全店合計・前年比、要注目/好調の店舗、前年比の最高/最低店舗、要約文 |
weekly |
sales |
店舗×週の合計・前年同週・前年比 |
判定のしきい値は、あとから見てもわかるよう calc の説明にも書いています。
| 判定 | 条件 |
|---|---|
| 傾向(上昇/下降) | 最初の週→最後の週の売上が ±2% 以上 |
| 要注目 | 前年比 97% 未満、または週次の変化が −5% 以下 |
| 好調 | 前年比 105% 以上 |
コメント文は、「どの部門が一番落ちたか」「客数と客単価のどちらが主因か」を数式で判定して組み立てています。「理由の仮説」も、部門ごとのテンプレート文から選んでいるだけの機械的なものです。画面にも「現場での事実確認が必要」と明記しています。AI が理由を言い当てているわけではなく、確認の出発点を機械的に出しているという位置づけです。
ポイント5:描画は d3、「部門×前年比」を1枚に
メインのグラフは、d3 で積み上げ棒(食品・衣料・住居余暇、左軸=千円)と折れ線(前年比、右軸=%)を重ねています。100% の基準線を点線で入れ、前年を上回る/下回るが一目でわかるようにしています。店舗別の週次推移は、縦軸を全店で揃えた小さな折れ線にして、店舗間の規模の違いも見えるようにしました。
まとめ
Google Drive の Excel を元にしたダッシュボードは、Claude への依頼文だけで作れました。Excel の数字を直して開き直すと、グラフや KPI だけでなく、判定やコメントまで変わります。
毎月の売上報告のように、Excel はあるけれど見せ方だけ作り直したい場面で使いやすいと思います!











