Power Automate DesktopでAPIを呼び出す方法
PADのブラウザ操作の自動化は気軽にPC操作を記録できる一方で、UIの変更に弱く、速度が遅いという弱点があります。
これらの弱点を克服したのがAPIです。
今回はGemini APIとSlack APIを例に解説します。
Gemini APIとSlack APIは無料枠があり、クレジットカードの登録も不要で簡単に始められるのでオススメです。
APIとは?
APIはアプリ同士がやり取りする窓口のような仕組みで、画面操作を必要とせず高速で安定しているのが特徴です。
事前準備
まず初めにGemini APIとSlack APIを用意します。
それぞれのAPIのセットアップ手順は下記の記事で解説しましたのでご参照ください。
PADに組み込む
PADからAPIを呼び出すには、HTTP>「Webサービスを呼び出します」アクションを使用します。

Gemini APIの例
それぞれの項目を以下のように入力します。
試しにGeminiに「こんにちは」と送ってみましょう。

URL:
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
メソッド:
POST
受け入れる:
application/json
カスタムヘッダー:
x-goog-api-key: (ここに先ほど発行したGeminiのAPIキーを入力してください)
コンテンツタイプ:
application/json
要求本文:
{
"contents": [
{
"parts": [
{
"text": "こんにちは"
}
]
}
]
}次に、「詳細」をクリックして「要求本文をエンコードします」をオフにします。

また、「生成された変数」をクリックし変数名を変更することができます。
今回はWebServiceResponseを「要約内容」に変更します。

ここまで実行し要約内容の中身を見てみます。
すると長い文字列の中にGeminiからの返答と思われる個所があります。

この返答だけを抽出するために、変数>「JSONをカスタムオブジェクトに変換」アクションを追加します。

JSON:に先ほど決めたGeminiからの返答が入っている変数を指定します。
今回の場合は%要約内容%です。

次に、変数>「変数を設定」アクションを追加します。

以下のように設定します。
変数名は同じく要約内容にしておきます。
こうすることで、先ほど不要な情報が含まれていた要約内容がGeminiからの返答の本文のみで上書きされます。

%JsonAsCustomObject['candidates'][0]['content']['parts'][0]['text']%要約内容を開いてみると、返答の本文のみが抽出できています

Slack APIの例
Slack APIも同様に「Webサービスを呼び出します」アクションを使用します。
今回の例ではchat.postMessageメソッドを使ってメッセージを送信する方法を解説します。

URL:
https://slack.com/api/chat.postMessage
メソッド:
POST
受け入れる:
application/json
カスタムヘッダー:
Authorization: Bearer (自身で発行したトークンに置き換えてください)
コンテンツタイプ:
application/json
要求本文:
{
"channel": "(送信したいチャンネル名に置き換えてください)",
"text": "PADからSlack APIで送信テスト"
}Geminiの例と同様に、「詳細」をクリックして「要求本文をエンコードします」をオフにします。

送信できました!

実践編
過去にこちらの記事で作成したフローで、ChatGPTによる要約とSlackへの投稿をブラウザ操作で自動化しました。
今回は、このブラウザ操作の部分をAPIでの実装に置き換えていきます。
記事内ではChatGPTを使用しましたが、今回作成したGemini APIを使用して置き換えます。
Gemini APIに置き換える
まずはブラウザ操作で行っていたChatGPTのアクションを丸ごと消してしまいます。


削除した場所にGemini APIのアクションを追加します。

次に、Geminiに実際の指示を与えるよう設定します。
「Webサービスを呼び出します」アクションの「要求本文」のtext:を実際の指示に置き換えます。

ブラウザ操作を削除したことでブラウザを閉じる必要がなくなりました。
フローの最後に行っていたブラウザを閉じるアクションも一緒に削除しておきましょう。

Slack APIに置き換える
Slackも同様にブラウザ操作で行っているアクションを削除します。

削除した場所にGemini APIのアクションを追加します。

「Webサービスを呼び出します」アクションの「要求本文」のtext:を実際にSlackで送信したいテキストに変更します。

この時、Slackに送信したいテキストにダブルクオーテーションや改行が含まれているとAPIの呼び出しに失敗してしまいます。
原因はAPI経由でSlackにメッセージを送る際JSONという形式でやり取りするのですが、ダブルクオーテーションや改行がプログラム的に意味のある値だと認識してしまい、JSONの形が崩れてしまうためです。
これを避けるため、オブジェクトというJSONを作るための下書きを作成してからAPIを呼び出します。
変数>変数の設定アクションを追加します。

変数に要約した内容を格納した変数を設定します。
今回の場合はSlack通知内容という変数名です。
値に要求本文の中身を張り付けます。

%{ 'channel': '(チャンネル名に置き換えてください)', 'text': (自身で設定した変数名に置き換えてください) }%上記のアクションの後ろに、変数>カスタムオブジェクトをJSONに変換アクションを追加します。

「カスタムオブジェクト」と「生成された変数」どちらもSlackに通知する用の変数を設定します。

上記アクションの後ろにWebサービスを呼び出しますアクションを追加してください。

ここまででブラウザ操作をAPIに置き換えることができました。
正常に動作するかフローを実行して試してみてください。

まとめ
APIを使いこなすことでより高速で安定したフローを構築できるのでぜひ活用していきましょう!
このアカウントでは、知っていると周りと差がつく自動化・効率化に関する情報を発信していきます。
ぜひフォローして時間と余裕を取り戻しましょう!
