【できるUiPath】は注目のRPAサービス「UiPath」を使って、RPAのワークフローを作るための基本操作から、実際に業務をRPA化する実践テクニックまでを解説する連載です。
過去の記事一覧【できるUiPathまとめ】

レッスン38REST APIとJSONの活用

外部のWebサービスと連携させるには

ワークフローから、外部のWebサービスを利用してみましょう。外部サービスからデータを取得したり、AIなどのクラウドサービスを活用できます。

リクエストの応答をJSONで取得して利用する

インターネット上のWebサービスの中には、外部から一部のサービスを利用するためのインターフェース(API)を提供しているものがあります。中でも、URLを使って外部サービスと連携させるタイプのAPI(REST API)は、[HTTPリクエスト]を使ってワークフローを連携させることが可能です。

リクエストの結果はJSONと呼ばれる構造(HINT!「JSONの構造を理解しよう」参照)のデータで受け取るのが一般的ですが、ワークフローで利用するには、JSON形式に従った構造に復元する「デシリアライズ」という操作が必要です。

[HTTPリクエスト]

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

[JSONをデシリアライズ]

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINTどんな用途に使えるの?

ここでは、政府の統計情報サイトから人口などのデータを取得する例を紹介しますが、GoogleやTwitterなどの各種サービスを利用したり、クラウドサービスとして提供されているAIを使ってUiPathからデータ分析をすることなどもできます。

HINT[UiPath.Web.Activities]が必要

このレッスンで紹介する手順を実行するには、UiPath Studioに[UiPath.Web.Activities]をインストールする必要があります。レッスン37を参考に、[パッケージを管理]から[UiPath.Web.Activities]を検索してインストールしましょう。

HINTこのレッスンで使う変数

このレッスンでは、次の変数を使います。ワークフロー内で登場する変数の用途を確認しておきましょう。

resJson

型:String
用途:Webサービスから戻ってきたデータをJSON形式のデータを格納する

datJson

型:JObject
用途:取得したJSON形式のデータをデシリアライズ後に格納する

getDat

型:Object
用途:JSON形式のデータから取り出した必要なデータを格納する

事前の準備

ここでは例として、日本の政府統計関係情報が掲載された「e-Stat」からデータを取得します。e-StatのAPI連携機能を利用するには、事前の登録が必要です。

1Webページにアクセスして登録する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

e-Stat政府統計の総合窓口

HINTe-Statって何?

e-Statは、2008年から本運用が開始された政府統計のポータルサイトです。政府や各省庁が実施している統計調査の各種情報がワンストップで提供されています。国土や気象、人口、農林水産、工業、土地など、さまざまな情報を無料で入手できます。

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

2アプリケーションIDを取得する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINTAPI連携って何?

API連携は、e-Statで提供されているデータをほかのシステムから利用するための機能です。データを指定するためのパラメーターをURLに含めて送信することで、該当するデータが送られてきます。

e-Statは、Webページからデータを参照するだけであれば、登録なしで利用できますが、API連携を使うには登録が必要です。登録して、リクエストに含める必要がある「アプリケーションID」を取得しましょう。

3APIリクエストURLを取得する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINTAPIリクエストURLって何?

APIリクエストURLは、欲しい情報を指定するためのパラメーターを含んだURLのことです。

APIリクエストURLは、パラメーターを自分で指定して生成することもできますが、かなり複雑になるため、手順3で紹介しているように、e-Statのページで取得したい情報を指定後、APIリクエストURLを自動生成した方が簡単です。

HINTリクエストに失敗したときは

e-Statのサイトでは、戻ってくるデータ形式の違いによって、指定するURLが異なります。

[プレビュー]ボタンをクリックしても、思う通りの値が返ってこなかったときは、テクニックを参考に、JSON形式が指定されているか、自分のアプリケーションIDが指定されているかを確認しましょう。

HINTAPIリクエストURLの加工が必要

手順3で表示されたAPIリクエストURLは、XML形式でデータを取得するためのURLになっています。JSON形式で取得する場合は、次のように「/json」を追加しましょう。

また、標準では「&appId=」の部分が空になっています。そのままでは、APIを利用できないので、忘れずに自分のアプリケーションIDを追記しましょう。

APIリクエストURLの修正

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

[HTTPリクエスト]でAPIリクエストを送る

事前の準備が整ったら、UiPath Studioからe-Statに接続して、データを取得してみましょう。[HTTPリクエスト]で自動生成したAPIリクエストURLを指定します。

1[HTTPリクエストウィザード]で設定する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINT認証が必要なときは

Webサービスによっては、APIリクエストの際に、ユーザー名やパスワードを使った認証が必要になることがあります。

認証が必要な場合は、[HTTPリクエスト]のプロパティで認証情報を登録しましょう。[OAuth1] や[OAuth2][簡易認証]を利用できます。

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

2リクエストの結果を確認する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

3データを変数に格納する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINTいったん、文字列として保管する

Webサービスから戻ってきたJSON形式のデータは、いったん、文字列として変数に保管します。手順3で変数に格納する際は、特にJSONであることを意識する必要はありません。

なお、そのままでは、データの構造が認識されないため、必ずデシリアライズで構造を復元してから利用します。

JSONをデシリアライズする

1[JSONをデシリアライズ]を追加する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

2ファイルに出力する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINT[1行を書き込み]で確認してもいい

ここでは、取得したJSON形式のデータの行数が多いため、テキストファイルに書き出して、その中身を確認しています。そもそも確認が不要な場合は、テキストファイルへの書き込みは不要ですが、簡単に確認したいのであれば[1行を書き込み]で確認しても構いません。

HINTデシリアライズする前と比べてみよう

処理の内容をもっと詳細に確認したいときは、手順2で、[テキストファイルを書き込む]をもう1つ追加して、「resJson」変数の内容も出力してみましょう(下の画面)。

両方を比べると、デシリアライズ前の「resJson」は文字の羅列で意味を把握するのが困難ですが、デシリアライズ後の「datJson」はJSON構造が分かりやすくなっていることが理解できるでしょう。

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

3構造化されたJSONデータを確認できた

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINT別の年の人口を取得したいときは

手順3のJSONの構造を確認すると分かるように、人口のデータは「VALUE:」配下の配列として格納されています。0番目が1980年(@timeの値)なので、例えば、1985年を指定したいときは、この数字を変えて「(1)」と指定します。

HINTレコード件数も確認できる

戻ってきたJSON形式のデータには、人口などの具体的なデータだけでなく、取得したデータの件数などの管理用の情報も含まれています。

具体的には、次のように、「RESULT_INF」の「TOTAL_NUMBER」にある「8」が取得したデータの件数を示します。この値を元に、「繰り返し(コレクションの各要素)」で処理を繰り返せば、大量のデータを順番に処理することもできます。

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINTJSONの構造を理解しよう

JSONでは、「{}」や「:」「,」といった記号を使ってデータを構造化します。

例えば、「{"人口":"4000"}」は人口が4000であることを示しています。また、「{}」を重ねることで階層化したり、「,」で区切ることで配列としてデータを扱えます。基本的な構造を確認しておきましょう。

なお、UiPath StudioでJSONのデータを指定するときは、下の例のように最上位の階層から順番に指定し、配列の場合は「(0)」のように番号でデータの順番を指定します。

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

JSONから必要な値を取り出す

デシリアライズしたJSON形式のデータから、欲しいデータを指定して取得してみましょう。ここでは、1980年の人口を指定して取得します。

1[代入]を追加する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

2式エディターを起動する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

3式を入力する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

4変数の型を変更する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINT変数の型を[Object]に変更する

手順1で作成した「getDat」変数は、型が[GenericValue]に設定されています。そのままでは、指定したJSONのデータを格納できないので、忘れずに[Object]に変更しておきましょう。

5結果を出力する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

6構造化されたJSONデータを確認する

外部のWebサービスと連携させるには(REST APIとJSONの活用) - できるUiPath

HINT繰り返し処理もできる

ここでは、JSONの値を「(0)」のように配列の番号で指定して、個別に取り出しています。

JSONから複数の値を取り出して順番に処理したいときは、[繰り返し(コレクションの各要素)]を利用して、配列のデータを順番に処理します。

PointJSON活用の流れと基本を押さえておこう

UiPath Studioから外部のWebサービスを利用すること自体はさほど難しくありません。[HTTPリクエスト]を利用し、公開されているAPIの仕様に従ってリクエストを送ればいいだけです。

ただし、戻ってきたデータを活用するには、JSON形式のデータを扱うための流れやデータ構造の基本を押さえておく必要があります。

ここではe-Statを例に操作を解説しましたが、AIを使った分析などでも、おおまかな流れは同じです。ここで紹介したアクティビティを活用して、いろいろなWebサービスと連携させてみましょう。

提供:UiPath

関連まとめ記事