Excelの日次レポート自動化は「Power Automateが起動と配信、Excelがデータ保持と集計、Claude APIがコメント生成」の3層に分けるのが正解です。数値の計算はExcel側で終わらせ、AIには文章化だけを任せる——この分担が破綻しない構成の条件になります。
必要なもの(先に確認してください)
- OneDrive for Business または SharePoint(ローカルのExcelファイルはPower Automateから触れません)
- Power Automate Premium ライセンス(HTTPアクションはプレミアムコネクタ扱い。代替案は後述)
- Claude APIキー(Anthropic Consoleでアカウント作成後、API Keysから発行)
- 全体構成:役割を3つに分ける
- ステップ1:Excel側を自動化に耐える形にする
- ステップ2:Power Automateのフローを組む
- ステップ3:プロンプトの型を決める
- ステップ4:HTTPアクションの完成形
- 実際にハマる5つのポイント
- コストと運用の現実
- まとめ
- 関連記事
- あわせてチェック
毎朝、前日の売上や問い合わせ件数をExcelから拾って、コメントを添えてメールやTeamsに流す。この作業を10分でも毎日やっていれば、年間で40時間以上が消えていきます。しかも人がやる以上、休むと止まります。
以下、実際に組むときの手順と、必ずつまずくポイントをまとめます。
▲ Excel+Claude サンプル
全体構成:役割を3つに分ける
| 層 | 担当 | 具体的な仕事 |
|---|---|---|
| Power Automate | 起動・配線・配信 | 毎朝8時に起動、Excelから行取得、APIを叩く、Teams/メールに送る |
| Excel | データ保持・計算 | 生データの蓄積、前日比・達成率などの集計 |
| Claude API | 文章化 | 集計済みの数値を受け取り、要約コメントを書く |
重要なのはClaudeに計算させないことです。生データを丸ごと渡して「集計して」と頼むと、桁を読み違えたり合計がずれたりします。Excelの数式で確定した数値だけを渡し、Claudeには「この数字をどう説明するか」だけを任せる。ここを守るだけで信頼性が段違いに上がります。
ステップ1:Excel側を自動化に耐える形にする
- 保存先はOneDrive for BusinessかSharePoint。ローカルのファイルはPower Automateから触れません。
- 必ずテーブル化する(範囲を選んで
Ctrl+T)。Power AutomateのExcelコネクタはテーブル単位でしか行を読めません。テーブル名は「デザイン」タブからDailyDataのような分かる名前に変更しておきます。 - 集計専用のシートを別に作る。生データ1000行をそのまま渡すのではなく、
Summaryシートに「前日売上」「前日比」「今月累計」「目標達成率」など10行程度に圧縮した表を用意し、こちらもテーブル化します。渡すデータが小さいほど、速く・安く・正確になります。 - 日付列は文字列で持つ。
=TEXT(A2,"yyyy-mm-dd")で別列を作っておくと、後述のシリアル値問題を丸ごと回避できます。
ステップ2:Power Automateのフローを組む
- 繰り返し(スケジュール)トリガー — 毎日8:00、タイムゾーンは「大阪、札幌、東京」を選択
- 表内に存在する行を一覧表示 — 対象は
Summaryテーブル - 作成 — 取得した行をJSON文字列に整形(
string(body('表内に存在する行を一覧表示')?['value'])) - HTTP — Claude APIを呼ぶ
- チャットまたはチャネルでメッセージを投稿する / メールの送信 — 結果を配信
たった5アクションです。凝った分岐を入れる前に、まずこの一直線を動かしきることをおすすめします。
ステップ3:プロンプトの型を決める
自由に書かせると、日によって長さも構成も変わり、比較できないレポートになります。先に型を固めます。この文面は次のステップでsystemパラメータに入れます。
あなたは日次営業レポートのコメントを書く担当です。 出力形式: 【結論】1文で状況を言い切る 【変化】前日・前週からの変化を3点、箇条書きで 【要確認】異常値があれば1点だけ指摘。なければ「特になし」 制約: - 与えられた数値のみ使用し、計算や推測はしない - 全体で300字以内 - 前置きや挨拶は書かない
「前置きを書かない」の一文がないと、毎朝「承知しました。以下がレポートです」から始まる文章が届きます。地味ですが効きます。
ステップ4:HTTPアクションの完成形
以下がそのまま動く最終形です。プロンプトはsystem、データはmessagesに分離しています。
- メソッド: POST
- URI:
https://api.anthropic.com/v1/messages - ヘッダー:
x-api-key(APIキー)、anthropic-version: 2023-06-01、content-type: application/json - 本文:
{ "model": "claude-haiku-4-5-20251001", "max_tokens": 600, "system": "あなたは日次営業レポートのコメントを書く担当です。\n\n出力形式:\n【結論】1文で状況を言い切る\n【変化】前日・前週からの変化を3点、箇条書きで\n【要確認】異常値があれば1点だけ指摘。なければ「特になし」\n\n制約:\n- 与えられた数値のみ使用し、計算や推測はしない\n- 全体で300字以内\n- 前置きや挨拶は書かない", "messages": [ { "role": "user", "content": "@{json(concat('\"以下は前日の営業サマリです。\n', outputs('作成'), '\"'))}" } ] }
モデルは、定型的な日次要約なら軽量なHaikuで十分です。「なぜ落ちたのか」といった解釈まで求めるならclaude-sonnet-5に上げます。最初はHaikuで動かし、物足りなければ差し替える——モデル名の1行を変えるだけです。
レスポンスから本文を取り出す式はこれです。配列アクセスにも?を付けておくと、空レスポンスが返った日にフローが落ちません。
body('HTTP')?['content']?[0]?['text']
APIキーは絶対にフローへ直書きしないでください。Power Platformの「環境変数」か、可能ならAzure Key Vaultに置き、そこから参照します。フローはエクスポートで持ち出せるため、直書きは鍵を配って歩くのと同じです。
なお、HTTPアクションはプレミアムコネクタです。標準ライセンスだけで完結させたい場合は、Office ScriptsのfetchからClaude APIを呼ぶ手もありますが、外部API呼び出しをテナントのポリシーでブロックしている組織が多いため、ライセンス以前に管理者へ疎通可否を確認してください。
実際にハマる5つのポイント
1. 取得できる行が256件で止まる Excelコネクタの既定値です。アクションの「設定」からページ分割(pagination)をオンにし、しきい値を5000程度に上げます。
2. ある日突然HTTPが400で落ちる(JSONエスケープ)
最も原因が分かりにくいトラブルです。Excelのセルにダブルクォート・改行・\が入った瞬間、@{outputs('作成')}を素で埋め込んだJSONは壊れます。上のようにjson()で文字列化して埋めるか、replace(replace(outputs('作成'),'\','\\'),'"','\"')で先にエスケープしてください。「昨日まで動いていたのに」の犯人はたいていこれです。
3. 日付が「45678」のような数字で返る
Excelのシリアル値です。式で変換するならaddDays('1899-12-30', int(<値>), 'yyyy/MM/dd')。前述のとおり、Excel側で文字列列を作っておくほうが確実です。
4. 日付が1日ずれる
utcNow()をそのまま使うと、朝8時の実行でも前日扱いになることがあります。convertTimeZone(utcNow(),'UTC','Tokyo Standard Time','yyyy-MM-dd')で明示的に変換します。
5. APIが落ちた日にフローごと止まる HTTPアクションに「再試行ポリシー」(指数間隔・4回程度)を設定し、後続の配信アクションの実行条件に「失敗した場合」を追加して、エラー時は数値だけのシンプルなレポートを送ります。コメントが付かなくても数字は届く設計です。
ただし、静かにフォールバックすると誰も障害に気づきません。本文の冒頭に「※コメント生成に失敗しました(数値のみ)」の一行を必ず入れ、管理者宛てのメールも1通飛ばしておく。ここまでやって初めて運用として完結します。
コストと運用の現実
トークン量で見積もると判断しやすくなります。集計10行なら入力は500トークン前後、出力も300字=400トークン程度。1日1回・月30回動かしても合計3万トークンほどで、軽量モデルなら誤差のような金額です(単価は改定されるため、実際の費用は公式の料金ページで最新値を突き合わせてください)。削減できる工数を考えれば、回収は一瞬です。
運用で効くのは、生成されたコメントもExcelに追記して残すことです。フローの最後に「表に行を追加」を挟み、日付・入力データ・出力コメントを蓄積しておく。プロンプトを直したときの比較材料になり、「先月のこの日は何て書いてたっけ」にも即答できるようになります。
まとめ
- 計算はExcel、文章化はClaude、配線と配信はPower Automate——役割を混ぜない
- Excelはテーブル化+集計シートを作り、渡すデータを小さくする
- プロンプトは
system、データはmessages。APIキーは環境変数へ - 256行制限・JSONエスケープ・シリアル値・タイムゾーン・エラー時フォールバックの5点を先に潰す
まずは「毎朝8時にSummaryシートを読んでTeamsに投げるだけ」のフローを作ってみてください。Claudeを挟むのはその後で構いません。動く1本があれば、そこから育てるのは驚くほど簡単です。
関連記事
- Excel LAMBDA・LET関数の作り方|Claudeに設計を頼めば自作関数はすぐ完成する
- Excelのセルに =CLAUDE_ASK と書くだけ|xlwingsでAIを表計算に組み込む
- Excelデータを貼るだけ。Claudeに集計・異常値検出・報告書作成まで任せる方法
- SUMIFS・COUNTIFSの複雑な条件式はClaudeに設計させる【日付範囲・部分一致・OR条件対応】
- Claude×Excelで業務レポート自動作成|1時間の作業を10分にする手順とプロンプト