デスクワークを超絶快適にするおすすめギアたち

Power Automate for DesktopからAPIをたたいてみよう!!!

【当サイトはプロモーションを含んでいます】

じょじお

Web APIという仕組みを使うとPower Automate for Desktop(以下:PAD)を外部のサービスと簡単に連携することができます。

ぽこがみさま

PAD単体ではできないことができるようになるのでより強力な自動化フローが作成できるようになるかもしれないよ!

じょじお

この記事では、PADでWeb APIを使って外部サービスと連携するための基礎知識を、フローを作成しながら学習するための記事です!

この記事でわかること

  • Web APIとは何かがざっくりとわかる。
  • REST APIドキュメントの読み方がわかる。
  • REST APIが公開されている外部サービスとPADを連携させるための基礎知識がわかる。
  • PADでREST APIを使ったフローを作成できるようになる。
目次

外部サービスと連携するためのしくみ

まず、PADで外部サービスと連携する方法について確認しましょう!PADで外部サービスと連携する方法には以下の3つの方法のいずれかを使って実装することになるかと思います。

Power Automate for Desktopで外部サービスと連携する3つの方法

  1. PADに用意された専用のアクションを使う。
  2. アクションを組み合わせて処理を自作する。
  3. Web APIを利用する。
方法① 専用のアクションを使う。

専用のアクションは専用に作られているので、もし利用したい外部サービスの専用のアクションがあればそれを一番簡単です。PADには、AWSやAzureやGoogleなどの一部の外部サービスには専用のアクションがあります。

専用のアクションが無い場合、②か③の方法を検討しましょう。

方法② アクションを組み合わせて処理を自作する。

例えば外部サービスの例として「LINEにメッセージを送信する」場合を例にしますと、マウス操作やキーボード操作をコントロールするアクションを使ってLINEのデスクトップアプリケーションを操作する処理を1から作る方法があります。この方法はアクションの数も増え、作成に時間がかかり、安定性も担保されません。

方法③ Web APIを利用する。

利用したい外部サービスにAPIが公開されている場合、APIを利用すれば、たった二つのアクションで簡単にデータ連携ができます。

じょじお

以上の理由で、PADに利用したい外部サービスの専用アクションが無い場合は、APIが公開されていないかを確認してみると良いかなと思います。

APIとは?

API(Application Programming Interface)とは?
APIとは、企業が提供するサービスの一部の機能をAPIとして公開してくれている場合、私たちがそのAPIを自分の作成したプログラム(たとえばPADフロー)の中で簡単に利用することができる仕組みです。

APIは、公開する側、利用する側に下記のようなメリットがあります。

APIを公開するメリット、利用するメリット
私たち(APIを利用するユーザー)のメリット

既に公開済みのサービスを借りて利用することで、労力をかけずに手早く自分が作成したプログラムの機能を拡張できるというメリットがあります。

企業(API公開者)のメリット

企業としては、サービスの技術を隠したまま機能の一部を公開することによって、API利用料による収益拡大を生んだり、そのサービスをより使ってもらいやすくなる、といったようなメリットがあります。

じょじお

公開する側にもメリットがあるため、APIを公開してくれているサービスがあるわけですね。

ぽこがみさま

もちろんAPIを公開していないサービスもありますのでサービスのWebサイトで確認してみてください。

APIの2つの種類(Web APIかそれ以外)

APIには、Web APIWeb APIじゃないAPIの2種類があります。近年のほとんどのAPIはWeb APIとなります。おそらくこの記事を読んでいただいているあなたが「あのサービスの機能を利用したいなぁ」と考えているサービスのAPIもおそらくWeb APIかなぁと思います。

APIの種類

  • Web API
  • Web APIじゃないAPI
「Web API」と「Web APIじゃないAPI」の違い
Web APIとは?

インターネットを介して(HTTP/HTTPSを使って)データのやりとりをします。

    • Google Sheets API
    • LINE Notify API
    • Amazon、楽天など。
Web APIじゃないAPIとは?

インターネットを介さずデータのやりとりをします。

    • Windowsの操作をするWin32 APIなど。
じょじお

この記事では、一般的に利用頻度の高いWeb APIの方を解説しています。

Web APIの2つの種類(RESTかSOAPか)

Web APIは、RESTかSOAPのどちらかの実装方式で公開されています。近年では公開しやすさ、利用しやすさのメリットがあるため、多くの企業がRESTを採用してAPIを公開しています。

じょじお

PADでは、REST API・SOAP APIどちらのAPIも使うことができます。

じょじお

ただし、APIがどちらの種類で実装されているかによって、使用するアクションが異なりますのでAPIのドキュメントなどで事前に確認してください。

ぽこがみさま

この記事は、REST APIの外部サービスとの連携について解説しています。

Web APIの実装方式の2つの種類

  • REST API
  • SOAP API
『REST API』と『SOAP API』の違い
REST APIとは?

公開しやすい、利用しやすい。JSONやXMLを使ってデータのやり取りを行う。近年の主流

SOAP APIとは?

XMLを使ってデータのやり取りを行う。

Column

「APIをたたく」とは?

APIを実行して結果を取得することを何故か「APIをたたく」というように表現されることが多くあります。

語源はよくわかりませんが、システムエンジニアがコマンドを実行することを叩く(hit)と言うことがありますのでそこから由来しているのかもしれません。

IT界隈の人達の間では良く使われる言葉ですので「この処理の中でGoogle Drive APIを叩いて・・・」というような言葉がでてきたら『なんかしらのAPIを実行しているんだなぁ』というように理解すればよいかと思います。

JSONとは?

REST APIではJSONというデータフォーマットでデータのやり取りを行います(※XMLもたまにあります)。このため、REST APIを使用する前にJSONについて少しだけ確認しておきましょう。

JSONは、下記のようにキー(鍵)バリュー(値)コロンでペアにしてデータを保持します。下記の例では、”名前”というキーに”太郎”というバリューが格納されていることがわかります。

{
  "名前": "太郎",
  "苗字": "山田",
  "好きな食べ物": [ "ラーメン","ハンバーガー" ],
  "登録日": "2021/12/01"
}
じょじお

ここではJSONについての深い解説は行いませんので、JSONがわからない方は下記のドキュメントをご参考ください。

JSONとは何か – MDN Web Docs
https://developer.mozilla.org/ja/docs/Learn/JavaScript/Objects/JSON

JSONのキーとバリューは必ずダブルクォーテーションで囲みます。

Power Automate for Desktopで『REST API』を利用する時の流れ

じょじお

PADでREST APIを利用するには下記の流れで行います。

STEP
利用するAPIが公開しているドキュメントを読む

REST APIを利用するには、JSONデータをやり取りする上でいくつか下記のように必要な情報があります。

必要な情報は、利用するAPIのドキュメントに記載されているはずです。利用する前に必ずAPIドキュメントを読んで下記の必要な情報を集めていきます。

REST APIを利用するために必要な情報
エンドポイント

HTTP/HTTPSを送る宛先URIです。必須の情報です。

メソッド(HTTP Method)

送信するHTTPメソッドです。GET/POSTなどを良く使います。

ボディ(Body)

実際にAPIに送信するJSONです。データの本文です。

受信するコンテンツタイプ

外部サービスからPADで受信するとき(Response)のコンテンツタイプです。MIMEタイプと呼ぶこともあります。例:application/json

送信するコンテンツタイプ

PADから外部サービスに送信するとき(Request)のコンテンツタイプです。 MIMEタイプと呼ぶこともあります。 例:application/json

ヘッダー(Header)

上記以外にヘッダーに含めるべき情報です。認証が必要なAPIはここに認証情報を含めます。

STEP

「Webサービスを呼び出します」アクションを使ってHTTP/HTTPSを送信します。

PADでREST APIをたたくには、「Webサービスを呼び出します」アクションを使います。このアクションは「HTTP」グループの中にあるアクションです。

下表は、よく使う入力パラメータです。

引数省略可能承認既定内容
URL無効テキスト値Web サービスの URL です
メソッド(Method)N/AGET、POST、CONNECT、HEAD、PUT、DELETE、OPTIONS、TRACE、PATCH取得Web サービスを呼び出すために使用される HTTP メソッドです
受け入れる(Accept)有効テキスト値application/xmlWeb サービスの応答で受け入れられるコンテンツ タイプです
コンテンツタイプ(Content type)有効テキスト値application/xmlWeb サービスに送信される要求のコンテンツ タイプです
カスタムヘッダー(Custom headers)有効テキスト値Web サービスに送信される要求に含まれるカスタム ヘッダーです
要求本文
(Request body)
有効テキスト値Web サービスに送信される要求の本文です
「Webサービスを呼び出します」アクションの良く使う入力パラメータ

下表は、実行後に生成され結果が格納される変数です。

引数内容
WebServiceResponseHeadersテキスト値の一覧応答の HTTP ヘッダーです
DownloadedFileファイルダウンロードされたファイルです。ファイルの受信が無い場合省略されます。
WebServiceResponseテキスト値Web サービスの応答テキストです
StatusCode数値返された状態コードです
「Webサービスを呼び出します」アクションで生成される変数

詳細は、リファレンスを参照してください。

Power Automate for DesktopでREST APIをたたくには「HTTP」グループの中の「Webサービスを呼び出します」アクションを使います。

STEP

「JSONをカスタムオブジェクトに変換」アクションを使ってデータを取り出しやすくします。

Webサービスを呼び出します」アクションを実行するとPADにJSONが返却されます。

PADの場合、受け取ったJSONは「JSONをカスタムオブジェクトに変換」アクションを使ってオブジェクト型に変換するのが一般的かと思います。なぜかというと、PADは受け取ったJSONをただの文字列のカタマリとしてか認識してくれないため、このままでは扱いづらいのです。オブジェクト型に変換することで後続のアクションで扱いやすくなります。

たとえば下記のサンプルJSONから苗字を取り出す場合を例に考えてみます。PADにとってはJSONはただの文字列ですので、JSONの中から「文字列切り出し」アクションと「文字列検索」アクションを組み合わせて、苗字の” 山田”の前後にある余分な文字列を切り取る必要があります。これは結構面倒です。

ところがオブジェクト型に変換すれば、後続のアクションの中で%JSONのサンプル[“苗字”]%と指定するだけで簡単に苗字を取り出すことが可能です。

{
  "名前": "太郎",
  "苗字": "山田",
  "好きな食べ物": [ "ラーメン","ハンバーガー" ],
  "登録日": "2021/12/01"
}
じょじお

このため、APIから受け取ったJSONはカスタムオブジェクト型に変換しましょう。

Power Automate for DesktopでJSONをオブジェクト型に変換するには「変数」グループの中の「JSONをカスタムオブジェクトに変換」アクションを使用します。

【実践】PADでWeb APIを実行しよう!

STEP
利用するAPIの確認

それでは、前置きが長くなってしまいましたがPower Automate for Desktopを使ってWeb APIをたたいてみたいと思います。今回は練習として『すぐ呼び出し可能なWebAPI』というサービスを利用させていただきました。

『すぐ呼び出し可能なWebAPI』は、テストや学習を目的とした方を対象に有志の方が公開してくださっているREST APIです。通常、多くのAPIはユーザ登録をして認証キーを取得する必要とすることが多いのですが、こちらのAPIはユーザ登録不要無料で利用することができます。

すぐ呼び出し可能なWebAPI』
https://www.umayadia.com/Note/Note028WebAPISample.htm

このサービスは架空の人物名簿で、人物を取得したり、追加、更新、削除ができます。プログラムの練習やお試しに使用することを想定しています。

引用:すぐ呼び出し可能なWebAPIのサンプル – 概要 https://www.umayadia.com/Note/Note028WebAPISample.htm

APIを利用する際は、必ずドキュメントに記載された利用条件を読み、条件の範囲で節度を持って利用するようにしましょう!

STEP
今回のゴールの設定

こちらのAPIには下記のようないくつかの機能があるようです。今回はこのAPIの機能の一つGET Personsという機能を使って、こちらのサービスに登録された全人物の一覧を取得することをゴールとします。(図の赤枠の機能)

「すぐ呼び出し可能なWebAPIのサンプル」APIの一覧
STEP
ドキュメントを確認して必要な情報を取得する

GET personsという機能を利用する前にドキュメントを確認してみましょう。

先の説明で、REST APIを利用するには6つの必要な情報(エンドポイント・メソッド・ヘッダー・ボディ・送信コンテンツタイプ・受信コンテンツタイプ)があるとお伝えしました。これら6つの情報をAPIドキュメントから探します。

すぐ呼び出し可能なWebAPIのサンプル – ドキュメント

「すぐ呼び出し可能なWebAPIのサンプル」のGET Persons機能の仕様

▲上図の情報から、下記のような情報が必要であることがわかりました。

項目パラメータ
エンドポイントhttps://umayadia-apisample.azurewebsites.net/api/persons
メソッドGETを使うようです。
ヘッダー認証がありませんし、特に記述がないため不要のようです。
ボディ不要のようです。
受信コンテンツタイプJSONで返却されるようなので、application/jsonとします。
送信コンテンツタイプapplication/json(ドキュメントの共通仕様の項に記載があります。)
STEP
必要情報を確認できたのでPower Automate for Desktopを起動してフローを作成します。

新規フローを作成して「Webサービスを呼び出します」アクションを追加します。追加したら先ほど集めた「APIに必要な情報」を図のように入力しましょう。

「Webサービスを呼び出します」アクションの入力値

  1. URL:エンドポイントを入力します。https://umayadia-apisample.azurewebsites.net/api/persons
  2. メソッド:GET
  3. 受け入れる:受信時のコンテンツタイプを入力します。application/json
  4. コンテンツタイプ:送信時のコンテンツタイプを入力します。application/json
  5. カスタムヘッダー:ヘッダーに含める追加情報を入力します。今回は必要ないので空白にします。
  6. 要求本文:ボディに含める情報をJSONで入力します。今回は必要ないので空白にします。
STEP
「JSONをカスタムオブジェクト」アクションを追加します。

返却されたJSONは、「JSONをカスタムオブジェクト」アクションを使って扱いやすくします。

JSONの項目に「%WebServiceResponse%」を渡します。

STEP
フローを実行して結果を確認します。

フローを実行します。

▲フローを実行したらフロー変数の中の「StatusCode」変数を確認します。200番は成功を表すステータスコードですので無事にAPIを実行できたということになります。エラーが起きた場合は、それ以外の数字が入っているはずです。ステータスコードの意味はAPIによって異なりますのでAPIドキュメントを確認して対処してください。

▲正常なステータスコードが確認できたら、返却されたJSONを確認します。フロー変数の中の「JsonAsCustomObject」変数をダブルクリックして中身を確認します。

▲dataのところにある「詳細表示」をクリックします。

▲アイテムの一覧の中に、今回のゴールである「登録されている全人物の一覧」が取得できたことが確認できました!

こちらのJSONには、name(人物名)、note(人物についての一言)、age、registerDateなどがあるようです。受け取るJSONの仕様はAPIによって異なります。こちらも必ずAPIドキュメントで確認するようにしましょう。

【テストにおすすめ】気軽に扱えるWeb API

下記は認証不要無料で利用できるWeb APIです。気軽に使えるのでPADでのAPI連携の練習をもう少ししたい方におすすめのサービスです。

サービス名とリンクサービスの概要
{JSON} Placeholderブログのようなダミーデータを取り出したり更新できるAPI。API連携の練習やテスト向けに公開されている。
Dog API犬の画像のURLを取得できるAPI
CAT API猫の画像のURLを取得できるAPI

まとめ

じょじお

以上、PADでWeb APIのしくみを使って外部サービスと連携する方法について解説しました。

ぽこがみさま

次の記事では、認証が必要なWeb APIの例として、LINE Notifyを使ってLINEメッセージを送信する方法について解説しています。宜しければご覧ください!

お役に立てたらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次