Power Automateのプレミアムコネクタを使ってRest API連携してみた

Pocket

1.はじめに

近年、デジタル化が進んでいく中で、企業は多くのデータを蓄積し、それを活用することでビジネスを発展させています。

業務で利用されるデータは、クラウドサービスやシステムを通して、データの抽出、更新、追加などを行いながらデータを蓄積し、そのデータを連携することで業務を進めていくことが多いと思います。昨今のクラウドサービスは、『Rest API(Restful API)』を提供していることが多く、『Rest API』機能を利用することで、手動でWebなどからデータを抽出、更新するより、手間なくデータを活用できます。

※補足:「Rest API」とは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、Rest(Representational State Transfer)の原則に基づいて設計されたAPIを指します。HTTPメソッドとURLを使って、特定のリソース(例:ユーザー情報や商品情報などのデータ)を操作します。GET(データの読み込み)、POST(データの追加)、PUT(データの修正)、DELETE(データの削除)などのリクエストを使用してデータを操作できます。

本稿では、このRest APIを『Microsoft Power Platform(以下、Power Platform)』の『Microsoft Power Automate(以下、Power Automate)』を活用して、利用する方法ならびに作成例を記述していきます。

2.Power Automateとは

Power Automateとは、ビジネスニーズに合わせたカスタムアプリをローコードで作成できるMicrosoft社のクラウドサービス『Power Platform』のひとつです。

Power Automateは、Microsoft 365のTeamsやOutlook、外部のBoxやGmailなどのクラウドサービスと連携することで、作業タスクの自動化や繰り返される業務プロセスの自動化ワークフローを作成できます。作成したワークフローにより、データ連携やコミュニケーション効率化を図り、業務効率の向上を実現できます。

Power Automateにおいて、クラウドサービスと連携するための接続にはコネクタと呼ばれる機能を利用します。このコネクタを利用することで、プログラミングスキルがない市民開発者でも簡単にさまざまなクラウドサービスと連携し、業務を自動化できるようになります。

3.コネクタとは

Power Automateにおける外部サービスと連携するコネクタについて、詳しくご紹介します。

コネクタとは、Microsoftが用意した、サービスやシステムと連携できるAPIのことを指します。現時点で、TeamsやSharePointなどのMicrosoft 365サービスや、SAP、Oracleなど外部連携サービスのコネクタなど、数百種類あります。例えば、Teamsに対する業務を自動化したい場合、Microsoft Teamsというコネクタを使うことで、チームメンバーにメッセージを送る、Teams会議を作成するなどのアクションを設定できます。

図1:Microsoft Teamsコネクタとアクション<青枠:コネクタ><緑枠:アクション>

コネクタには大きく分類すると2つの種類があります。1つは、標準で利用できる『スタンダードコネクタ』と呼ばれるもの、もう1つは有償プランを契約することで利用できる『プレミアムコネクタ』と呼ばれるものがあります。

※補足:Microsoft 365を導入している企業は『スタンダードコネクタ』を追加費用無しで利用できますが、『プレミアムコネクタ』は追加費用が必要となります。

プレミアムコネクタの中には、SQL ServerやMy SQLなどのDBMS等のサービスへ連携できるコネクタや、HTTPプロトコルを利用して内部もしくは外部のサービスと連携できるコネクタなどさまざまな種類のコネクタがあります。

本稿で作成するワークフローは、Microsoftがコネクタを用意していない、外部サービスが提供している『Rest API』を実行するため、プレミアムコネクタであるHTTPコネクタを利用します。

4.Power AutomateでRest APIを実行するフローを作成

4-1.Rest APIの準備

Power AutomateのプレミアムコネクタであるHTTPコネクタを活用して、『Rest API』を活用する方法について見ていきます。

今回の題材として、前月の日本の総人口を取得して、対象者に通知する処理を自動化します。

取得するデータは、e-Stat(政府統計の総合窓口)と呼ばれる、さまざまなデータが取得できる統計のポータルサイトを利用します。e-Statは『Rest API』を提供しています。今回は、Power AutomateのHTTPアクションを利用して『Rest API』連携を行い、前月の総人口を取得します。取得したデータをMicrosoft Teamsによるチャットで通知するワークフローの作成手順をご紹介します。

※補足:『e-Stat』(政府統計の総合窓口)は、各府省が公表する統計データを一つにまとめ、統計データを検索したり、地図上に表示できるなどの、たくさんの便利な機能を備えた政府統計のポータルサイトです。このポータルサイトでは、データベース化されている統計データを機械判読可能な形式(XML、JSON等)で出力する『Rest API』を提供しています。

図2:作成する自動化ワークフローの概要図

実際に、フローを作成する手順を見ていきます。

e-Statが提供している『Rest API』を利用するためには、アプリケーションIDを取得する必要があります。アプリケーションIDは利用するシステムごとに取得します。今回は以下の設定で、アプリケーションIDを発行します。

取得ページ<https://www.e-stat.go.jp/mypage/view/api>

・『名称』・・・MISO記載用

・『URL』・・・http://test.localhost/

・『概要』・・・Power Automateで利用の検証の為

「発行」をクリックすると、図3の赤枠「appId」に英数字の羅列が表示されます。これがアプリケーションIDとなります。

図3:『e-Stat』のアプリケーションID取得画面

次に、前月の日本の総人口を取得するための『Rest API』を取得します。取得したいデータは、以下のホームページ上から検索して、見つけることができます。

図4:e-Statホーム画面

今回は、国勢調査の『人口推計 / 各月1日現在人口 概算値』のデータを取得したいため、その画面まで移動します。対象の以下の画面では、ここで取得できるデータの概要や項目についての情報が記載されています。このデータは、毎月1日の現在の人口推計データを『男女別』『年齢5歳階級』『時間軸(年月)』のカテゴリごとにデータ保管されています。本画面において、以下赤枠の『API』ボタンをクリックすると、データを取得するための『Rest API』が自動的に発行されます。

図5:『人口推計 / 各月1日現在人口 概算値』のデータセット画面

今回作成するフローは、『Rest API』のレスポンスを、『JSON の解析』アクションでデータを解析し、必要な項目を取得するロジックとするため、JSON形式で受け取れるURLにする必要があります。【API リクエスト URL】画面において、発行する『Rest API』レスポンスが、JSON形式になるように、ファイル形式を『JSON形式』に変更します。ファイル形式を変更した後に、発行されたURLをコピーして保管します。このURLが、データを取得するためのリクエストURLとなります。このURLでリクエストすることで、『人口推計 / 各月1日現在人口 概算値』のレスポンスをJSON形式で受け取ることができます。

図6:『人口推計 / 各月1日現在人口 概算値』の『Rest API』のリクエストURL発行画面

これで、『Rest API』のリクエストURLを作成できました。しかし、これを実行するためには『appId=』の後ろに、マイページで発行したアプリケーションIDをつなげる必要があります。アプリケーションIDを含めたURLでリクエストすることで、『人口推計 / 各月1日現在人口 概算値』を取得することができます。

『Rest API』・・・http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?appId=『アプリケーションID』&lang=J&statsDataId=0003443838&metaGetFlg=Y&cntGetFlg=N&explanationGetFlg=Y&annotationGetFlg=Y&sectionHeaderFlg=1&replaceSpChars=0

今回取得したいデータは、前月の男女合計の全年齢の人口総数です。取得したいデータ条件だけに絞り込むため『Rest API』のパラメータを設定します。パラメータは、『getStatsData?』の後ろに条件にあう値を追加することで、設定できます。また、複数のパラメータを設定するには、『&』を付けてつなげることで可能です。今回は、以下のように3つのパラメータで取得したい条件のデータに絞り込むことができます。

★前月の全年齢の男女合計の人口に絞る条件
条件①:男女合計 ・・・ パラメータ①:cdCat02=’000′ 
条件②:全年齢 ・・・ パラメータ②:cdCat03=’01000′
条件③:前月 ・・・ パラメータ③:cdTime=’2024000505′
※2024年5月のデータが欲しい場合の条件となります。

実行版『Rest API』・・・http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?『パラメータ①』&『パラメータ②』&『パラメータ③』&appId=『アプリケーションID』&lang=J&statsDataId=0003443838&metaGetFlg=Y&cntGetFlg=N&explanationGetFlg=Y&annotationGetFlg=Y&sectionHeaderFlg=1&replaceSpChars=0

これで、ワークフローで実行したい『Rest API』が完成となります。

4-2.Power Automate クラウドフローの準備

『Power Automate』で作成するワークフローに、用意した『Rest API』を組み込んで、毎月1日に前月の日本の総人口を取得して、通知するワークフローを作成していきます。
スケジュールで起動するワークフローであるため、『スケジュール済みクラウドフローを構築する』から作成を開始します。『人口推計 / 各月1日現在人口 概算値』は、当月1日には、前月の1日のデータが更新されているため、スケジュール条件を以下のように設定してワークフローの作成を開始します。

『開始日』・・・2024/6/1

『時間』・・・10:00 AM

『繰り返し間隔』・・・1ヶ月

図7:『スケジュール済みクラウドフローを構築する』の作成画面

新規作成したワークフローを、今回はクラシックモードで改修していきます。
新しいデザイナーのトグルをオフにすると、以下の画面が表示されます。

図8:トリガー設定後のPower Automateフローの初期画面

『Rest API』を実行時の条件③は、実行した月の前月を設定する必要があります。そのため、フローの実行時の現在の日時から前月を取得し、パラメータ③のルールに沿う日付形式に変換した値を求めて設定する工程を行います。

新しいステップから『現在の時刻』アクションを追加します。

図9:設定した『現在の時刻』アクション

『時間からの減算』アクションにより、取得した現在日付の1カ月分過去に遡った値に変換します。基準時間には、『現在の時刻』アクションで取得した動的コンテンツ『現在の時刻』を利用します。

図10:『時間からの減算』アクションの設定内容

どの年月のデータであるかを通知先へ連携するために、年月を持った変数を作成します。
前月の日付データを元に、『Rest API』に設定できる形式にするために、formatDateTimeを活用して、表示形式を変更します。『時間からの減算』アクションで取得した動的コンテンツ『時間からの減算』を変換して、変数に初期値として以下を設定します。

『値』・・・formatDateTime(body(‘時間からの減算’),’yyyy00MMMM’)年 formatDateTime(body(‘時間からの減算’), ‘MM’)月
※APIの条件③に設定する値は、5月の場合は’2024000505’とするため、上記を設定

図11:『変数を初期化する』アクションで条件③の引数を持つ変数の設定内容

条件の準備が完了したら、『HTTP』アクションを活用して、『Rest API』を実行するロジックを組み込みます。コネクタ『HTTP』の『HTTP』アクションを選択して、展開します。図12のように、条件①~③を設定した『Rest API』をURlに設定します。HTTPメソッドは『GET』であるため、方法で『GET』を選択し、アクションの設定が完了します。条件③には、変数『API設定引数』を設定します。

図12:『HTTP』アクションのAPI情報の設定内容

『HTTP』アクションで実行した『Rest API』のレスポンス結果のオブジェクト内にある前月の日本の総人口を参照するには、『JSONの解析』アクションを追加する必要があります。解析によりPower Automateフロー内で、動的コンテンツとして取り扱うことができます。

このアクションは以下の流れで設定します。

・『Rest API』を実行して、解析したいJSON形式の出力結果をコピーする

図13:Rest APIの実行結果画面<青枠:レスポンス結果><赤枠:RestAPI>

・JSONの解析アクションを追加する

・解析したいデータ『HTTP』アクションの動的コンテンツ『本文』をコンテンツに指定する

図14:『JSON の解析』アクションの設定内容

・『サンプルから生成』にて、コピーした出力結果を貼り付けて完了ボタンをクリックし、スキーマを自動生成する

図15:『サンプルからの生成』の設定内容

図16:自動設定されたスキーマの内容

上記の『JSONの解析』により、今回参照したい、その月の人口と人口の単位を、動的コンテンツに設定できます。

・人口は、『オブジェクトValue内の$』動的コンテンツに格納されます。 

・人口の単位は、『オブジェクトValue内のunit』動的コンテンツに格納されます。

最後に、『Microsoft Teams』コネクタの『チャットまたはチャネルでメッセージを投稿する』アクションを活用して、前月の日本の総人口を指定の宛先にチャットする処理を組み込みます。

・投稿者・・・『フローボット』(フローボットからの送信)

・投稿先・・・『Chat with Flow bot』(チャネルではなく受信者へ直接送信する設定)

・Recipient・・・自身のアカウントを設定

・Message・・・男女合計の『変数(‘取得年月’)』の総人口
        Value内の$(人口)Value内のunit(人口の単位)

図17:Teamsのチャットで通知先に送る設定の内容

上記で、前月の日本の総人口を取得して対象者に通知するフローの作成が完成です。
6月時点で、本フローを実行すると、通知先へ以下のメッセージが届きます。

このワークフローにより、毎月e-Statへアクセスして必要なデータのみに絞って総人口を確認するという手間を省けるようになります。

 

5.おわりに

e-Statに限らずさまざまなシステムで『Rest API』に対応しているシステムはたくさんあります。また、本稿のワークフローでは、用意されている『Rest API』の特性上HTTPメソッドのGETを使った処理をご紹介しましたが、POST、PUT、DELETEなどのリクエストも『HTTP』アクションでは実現できます。

『Power Automate』のコネクタを使って『Rest API』連携によるデータ操作に関わる業務を効率化していきましょう。

お問い合わせ先

執筆者プロフィール

Agata Ryuuki
Agata Ryuukitdi RPA推進室
RPA関連の開発および運用を経験。
最近は、Microsoft Power Platform製品のPower AppsやPower Automateをメインに、開発及び教育を担当。
Microsoft 365 Copilotに期待と興味があります。
Pocket

関連記事