みなさん、こんにちは!業務ハックLabの「よう」です。
最近、「Power AutomateでClaudeを使いたいんですが、どうすればいいですか?」というご質問をよくいただくようになりました。
標準コネクタがない、HTTPリクエストやJSONの書き方がわからない、APIキーの管理が不安…そういった悩みを一気に解決すべく、今回は実機検証した内容をまるっとまとめました!
📋 この記事の要点
※ 2026年5月時点の情報です
- Power Automate PremiumライセンスとAnthropic API別課金(console.anthropic.com)の2点が必須前提です。
- カスタムコネクタを使うと、APIキーがフロー実行履歴に記録されません(マスクではなく項目自体が存在しない状態)。
- 定義タブでmessages配列が分解される挙動はPower Automateの仕様です。
roleパラメータは「内部・必須・デフォルト値 user」の3点セットで対応します。- JSONレスポンスからClaudeの回答テキストを取り出すには、式
body('JSON_の解析')?['content']?[0]?['text']を使います。- カスタムコネクタのテストタブでは必ず401エラーが出ます。これは正常な動作です。動作確認は実際のクラウドフローで行ってください。
こんな方におすすめ: Power AutomateからClaude APIを呼び出したい市民開発者、および社内へ安全なAI環境を展開したい情シス・推進担当者の方。
「ClaudeをPower Automateに繋げたい」と思ったことはありませんか?
Claude.aiのチャット画面ではできることが、フローの中で自動化できたら最高ですよね。
ただ、公式コネクタがないので、自分で作るしかないわけです。
「でも、自分で作るのって難しそう…」と思っている方、大丈夫です!
今回は公式APIドキュメントの読み方からPower Automateへのマッピングまで、ステップバイステップで解説していきます。
なぜ「カスタムコネクタ」を自作するのか?
このセクションでは、HTTPアクションで直接APIを叩く方法ではなく、カスタムコネクタを使うべき理由を解説します。
まず結論から見ていただきたいので、スクリーンショットを2枚並べます。


上がHTTPアクションを使ったフローの実行履歴です。
x-api-key のヘッダーに、APIキーの値が平文で表示されています。
下がカスタムコネクタを使ったフローの実行履歴です。
x-api-key ヘッダーの行が、そもそも存在していません。
「マスクされている」のではありません。
カスタムコネクタは認証を「接続レイヤー」で処理するため、フロー自体がAPIキーの値を「知らない」状態になります。
だから実行履歴にそもそも現れないんです。
これが、HTTPアクション直書きではなくカスタムコネクタを使う、一番大きな理由です。
HTTP要求アクションとの違い(再利用性と共有のしやすさ)
セキュリティの次は、使い勝手の話です。
HTTPアクションで実装すると、フローを1本作るたびにAPIキーの設定・ヘッダーの組み立て・JSONのパース処理をコピペし続けることになります。
カスタムコネクタにしてしまえば、一度作ったら終わりです。
他のフローからも再利用でき、チームメンバーに共有することもできます。
「1回の構築コスト」対「毎回のコピペコスト」、長い目で見れば明らかにカスタムコネクタが得です。
💡 カスタムコネクタを使う2つのメリット
① APIキーがフロー実行履歴に記録されない(セキュリティ)
② 一度作ればチーム全員が再利用可能(生産性)
始める前に確認しておく2つのこと
このセクションでは、カスタムコネクタの構築を始める前に必ず確認が必要な前提条件を説明します。
⚠️ 前提①:Power Automate Premiumライセンスが必須です
カスタムコネクタの作成・利用には、Power Automate Premiumライセンスが必要です。
Microsoft 365に付属しているシードライセンスでは作成も利用もできません。
コネクタを他のメンバーに共有した場合、受け取る側もPremiumライセンスが必要です。
⚠️ 前提②:Claude.ai ProとAnthropic APIは別課金です
Claude.aiのProプランを契約していても、APIは使えません。
APIを使うにはconsole.anthropic.comで別途API用の課金設定が必要です。トークン従量課金になります。
「Proを使ってるからAPIも使えると思っていた」という誤解が最も多いので、必ず確認してください。
2点とも問題ない方、準備できたら進みましょう!
Step 1 ─ Claude APIキーを発行する
このセクションでは、Anthropic Consoleでのアカウント設定からAPIキー発行までの手順を解説します。
Claude Console(console.anthropic.com)でキーを作成する
console.anthropic.com にアクセスしてログインします。
左ナビゲーションから「APIキー」を選択して、「+ キーを作成」をクリックします。

ワークスペースを選択(今回はDefault)して、キー名を入力します。
後からどのキーか分かるような名前が理想です。(例:PowerAutomate_Test)
下図の例はあまりよくない例です(笑)

「追加」をクリックすると、以下のダイアログが表示されます。

🚨 ここだけは絶対に注意してください
このダイアログを閉じると、APIキーは二度と表示されません。
必ずコピーして、パスワードマネージャーや安全なメモ帳に保存してから「閉じる」を押してください。
キーが発行できたら、次はPower Automateでコネクタを作っていきます!
Step 2 ─ カスタムコネクタを作成する
このセクションでは、Power Automateのカスタムコネクタ作成画面での全般・セキュリティ・定義タブの設定手順を解説します。
全般タブとセキュリティタブの設定
make.powerautomate.com を開き、左メニューの「詳細」→「すべて見る」→「データ」→「カスタムコネクタ」→「+ 新しいカスタムコネクタ」→「空から作成」を選択します。
まず「全般」タブで、ホストに api.anthropic.com を入力します。

次に「セキュリティ」タブへ進みます。
- 認証タイプ:
APIキー - パラメータラベル:
x-api-key - パラメータ名:
x-api-key - 場所:
ヘッダー

この3点を入力したら「次へ」で定義タブへ進みます。
定義タブ:サンプルJSONをインポートする
定義タブでClaudeへのリクエスト構造を設定していきます。
「+ 新しいアクション」をクリックして、操作IDに CreateMessage と入力します。
続けて「サンプルからインポート」をクリック。
メソッドに POST、URLに /v1/messages を入力します。
ヘッダーに以下の2行を追加します。
anthropic-version: 2023-06-01content-type: application/json
ここで1点、読者の方がよく混乱するポイントがあります。
anthropic-version の値が 2023-06-01 という日付なので、「古い値なのでは?」と思って別の値に変えてしまう方がいます。
ですがこれはAnthropicの現行仕様における正式な値です。
この値のまま使ってください。変えてしまうとAPIが動かなくなります。
本文(Body)には、以下のサンプルJSONを貼り付けてインポートを実行します。
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "テストです"}
]
}
model の値 claude-sonnet-4-6 は、本記事執筆時点(2026年5月)の推奨モデルです。
モデル名はAnthropicの方針変更により将来変わる可能性があります。最新の推奨モデルは公式ドキュメントで確認してください。
【Gotcha①】「messagesが消えた!」は正常です
インポート実行後、パラメータ一覧を見ると「あれ、messages がなくなった?」と焦る方が多いです。

(これ、僕も最初「設定を間違えたかな…」と思って何度もやり直したんですよね)
安心してください、正常な動作です。
Power Automateはネストされた配列をインポート時に展開・分解する仕様を持っています。
messages 配列の中にあった role と content が、それぞれ独立したパラメータとして並んでいる状態になります。
なので messages が消えたのではなく、分解されたと理解してください。
ここから role と content を正しく設定していきます。
パラメータ設定のコツ:internal + 必須 + デフォルト値の3点セット
フロー作成者に見せる必要がなく、値が固定されるパラメータには「3点セット」を適用します。
まず role の編集画面を開きます。
role は常に user で固定してよいので、以下の3点を設定します。
- 必須: はい
- 表示: 内部(internal)
- デフォルト値: user

同様に、ヘッダーパラメータの anthropic-version と content-type にも同じ3点セットを設定します。

💡 カスタムコネクタ全般で使えるコツ
internal(内部)はフロー作成者が値を入力できない設定です。
デフォルト値と組み合わせると値が常に存在することが保証されます。
この2条件が揃う場合、「必須」にしておかないと値が欠落するリスクが理論上発生します。
internal + デフォルト値ありのパラメータは必ず「必須」にセットするのが正しいパターンです。
model と max_tokens は後から変更できるよう「詳細」表示にして、それぞれのデフォルト値(claude-sonnet-4-6、1024)を設定しておきます。
設定が完了したら「コネクタの更新」で保存します。
実際のフロー作成画面を見てみると、content の入力欄だけが表示されるシンプルなUIになっているはずです。

これで「設定が複雑すぎて使いにくい」という問題も解消されます!
テストタブについての重要な注意
定義画面には「テスト」タブがあります。
⚠️ テストタブでは必ず401エラーになります
テストタブはブラウザから直接APIリクエストを送信する仕組みになっています。
AnthropicはブラウザからのダイレクトアクセスをCORSで意図的にブロックしているため、
テストタブで実行すると必ず以下のエラーが返ります。
CORS requests must set 'anthropic-dangerous-direct-browser-access' header(ステータスコード: 401)
これは設定ミスではありません。正常な動作です。
動作確認は必ず実際のクラウドフローを作成して行ってください。

Step 3 ─ フローを作成してClaudeを呼び出す
このセクションでは、作成したカスタムコネクタを使って実際のクラウドフローを作り、Claudeを呼び出す手順を解説します。
まず「接続」を作成する
ここで、ハマりやすいポイントがあります。
「カスタムコネクタを作ったのに、フロー画面で「カスタム」フィルターを選んでも何も表示されない…」
これ、コネクタの「接続」が未作成の状態で起きます。(僕も最初ここで詰まった)
コネクタを作成しただけでは使えません。接続の作成が別途必要です。
左メニューの「データ」→「接続」→「+ 新しい接続」から、先ほど作ったコネクタを検索して選択します。
APIキーの入力欄が出るので、発行したAPIキーを入力して接続を作成します。
これで「カスタム」フィルターにコネクタが表示されるようになります。
テスト実行と生レスポンスの確認
手動トリガーの新規クラウドフローを作成します。
アクションを追加して「カスタム」フィルターから作成したコネクタを選択し、CreateMessage アクションを追加します。
content にテスト用のプロンプトを入力して、フローを保存・実行します。
成功すると、以下のようなJSONレスポンスが返ってきます。

{
"statusCode": 200,
・
・
・
"body": {
"model": "claude-sonnet-4-6",
"role": "assistant",
"content": [
{
"type": "text",
"text": "(Claudeの回答テキスト)"
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 16,
"output_tokens": 110
}
}
}
Claudeの回答は body.content[0].text の中に入っています。
次のステップで、ここからテキストだけを取り出す処理を作ります!
Step 4 ─ JSONレスポンスからテキストを抽出する
このセクションでは、Claudeのレスポンスから回答テキストだけを取り出す「JSONの解析」アクションと、式(Expression)の使い方を解説します。
「JSONの解析」アクションでスキーマを自動生成する
「データ操作」→「JSONの解析」アクションを追加します。
コンテンツには、CreateMessageアクションの出力本文を指定します。
スキーマの設定が必要ですが、手入力は大変なので「サンプルから生成」を使います。
先ほど確認した実行結果のJSONをまるごと貼り付けると、スキーマが自動生成されます。

式(Expression)を使ってテキストを取り出す
ここで疑問が生まれるはずです。
「JSONの解析」後の動的コンテンツの一覧を見ても、Claudeの回答テキストが直接出てこないんですよね。
理由は、content が配列だからです。
Power Automateの動的コンテンツは、配列の中身を自動展開してくれません。
そのため、式(Expression)を使って明示的に指定する必要があります。
変数またはアクションの値フィールドで「式」タブを開き、以下を入力してください。
body('JSON_の解析')?['content']?[0]?['text']

この式を1パーツずつ分解して説明します。
body('JSON_の解析')─ 「JSONの解析」アクションの出力全体を取得します。?['content']─contentフィールドを取得します。?はnullセーフ演算子で、フィールドが存在しない場合でもエラーにならずnullを返します。?[0]─ 配列の最初の要素を取得します。Claudeのレスポンスは通常、content配列の先頭に回答テキストが格納されています。?['text']─ 最後にtextフィールドを取り出します。
この4ステップの連鎖で、ネストされたJSONの奥深くにある回答テキストを取り出せます。
💡 Tips:Claudeの回答にマークダウンが混入する場合
Claudeはデフォルトでマークダウン形式で回答するため、**太字**や## 見出しのような記号が混入することがあります。
プレーンテキストで扱いたい場合は、contentに入力するプロンプトの末尾に
「マークダウンを使わずに回答してください」と追加するだけで解消できます。
APIキーのセキュアな管理と組織内共有
このセクションでは、カスタムコネクタがなぜAPIキーを実行履歴に残さないのか、その仕組みと組織内での共有方法の概要を解説します。
カスタムコネクタが実行履歴にAPIキーを残さない仕組み
第1章でお見せした「x-api-keyが実行履歴に存在しない」という現象、その理由を改めて説明します。
カスタムコネクタは、APIキーを「接続」というレイヤーに保存します。
フローは「接続を通じてAPIを呼ぶ」という形になるため、フロー自体はAPIキーの値を保持しません。
そのため実行履歴には x-api-key ヘッダー自体が記録されません。
「マスクされた状態で表示される」のではなく、「そもそも記録されない」という動作です。
この2つは似ているようで、意味がまったく違います。
一方、HTTPアクションでAPIキーをヘッダーに直書きする場合は、フロー自体がAPIキーを保持します。
その結果、実行履歴にAPIキーの値が平文で記録されてしまいます。
組織内でカスタムコネクタを共有する
カスタムコネクタは「共有」機能を使って他のMakerと共有できます。
重要なのは、コネクタを共有してもAPIキー(接続)は共有されないという点です。
コネクタの「構造・設計」が共有されるのみです。
共有を受け取ったメンバーは、自分のAPIキーを使って別途「接続」を作成する必要があります。
また、受け取る側もPower Automate Premiumライセンスが必要です。

📌 情シス・推進担当者向けポイント
・コネクタの共有 = 設計の共有(APIキーは共有されない)
・各メンバーが自身のAPIキーで接続を作成する → 誰がどのキーを持つか管理しやすい
・受け取る側もPower Automate Premiumライセンスが必要
まとめ
今回やってみて感じたのは、カスタムコネクタは「最初に設定する手間」と「長期的な運用コスト削減」のトレードオフが非常に優れているということです。
特に組織で使う場合、HTTPアクション直書きでは「誰かのフローに誰かのAPIキーが入っている」という状態が生まれやすく、キーの管理が煩雑になります。
カスタムコネクタで接続レイヤーに認証を集約することで、この問題をシンプルに解決できます。
まずはご自身の環境でカスタムコネクタを1本作ることから試してみてください!
最初の設定が完了してしまえば、後は普通のコネクタと同じように使えます。
それでは皆さん、良い業務ハックライフを~!
📋 仕様メモ
・使用モデル: claude-sonnet-4-6(2026年5月時点の推奨モデル。将来変更される可能性があります)
・anthropic-version ヘッダー値: 2023-06-01(Anthropic現行仕様の正式値)
・必要ライセンス: Power Automate Premium(コネクタ作成者・利用者ともに必要)
・API課金: トークン従量課金(console.anthropic.comで設定。Claude.ai Proとは別課金)
・参考: https://docs.anthropic.com/en/api/messages


コメント