【初心者向け】UiPathによるRPA実装12 取得したWebサイトデータへのアクセスと閲覧

前回までの記事で、指定したキーワードによるGoogle検索結果データを取得するところまでの処理を自動化してきました。しかしながら、取得したデータを実際に見てみるところまで方法については紹介がまだでしたね。

今回は、取得データへのアクセス方法と閲覧方法について説明したいと思います。

<スポンサーリンク>

取得データのアクセス/閲覧方法

取得データの構造

データの見方を説明する前に、前回取得したデータがUiPath上、どのような形式で保存されているかを説明したいと思います。

結論から言ってしまうと、データは「DataTable」という種類のVariableに格納されています。

Variableとは文字や数字を格納する入れ物のことでしたね。文字を格納する場合は「String」、整数を格納する場合は「Int32」という種類のVariableを使うのでした。

「DataTable」もこのVariableの種類の1つで、「表形式」のデータを格納するものです。今回取得したデータは、「タイトル」、「URL」、「概要説明」の3つのかたまりが複数サイト分並べられているものでしたから、まさに表形式のデータですね。

Variableの設定変更

さて、この取得データへのアクセス方法について説明する前に、もう少し取得したデータについて見てみましょう。

まずは、前回作成された「Extract Structured Data ‘DIV’」ボックスをクリックし、右側のPropertiesペインの「Output」と書かれたところを見てみて下さい。処理のアウトプットとして、「DataTable」と記載されていますね。その右に書かれているのがVariable名になりますが、欄が狭くて良く見えないので、右側の四角のボタンをクリックしてみて下さい。

すると、以下の画面が表示されます。これは「前回のデータ取得処理の結果、”ExtractDataTable”という名前のDataTable型Variableが自動作成された」ことを意味しています。

念のために以前紹介した「Variables」ペインにて、このVariableが存在することを確認してみましょう。UiPathウインドウの下部、「Variables」と書かれた部分をクリックしてみて下さい。すると、確かに”ExtractDataTable”というVariableが存在することが分かりました。

ところで、現在の設定には問題があります。それを示すために、この後何をやりたいか、簡単に説明します。

下の図は、これまで作成してきたSequenceの全体像です。全体が分かるように、Activityを一部、ボックスの右上のボタンを使って折りたたんでいますが、”Data scraping”ボックスの中にWebデータを取得して”ExtractDataTable”に格納するActivityが含まれています。

そして、これからやりたいことは、この”Data scraping”ボックスの下に、「”ExtractDataTable”Variableにアクセスして、中身を表示する」処理を追加するということです。

ここで、先ほど見た「Variables」の一覧を改めて見てみましょう。

“ExtractDataTable”の「Scope」には”Data scraping”と書かれています。これはつまり、「”ExtractDataTable”というVariableは”Data scraping”のボックス内でのみ使えるものであり、その下にボックスを追加してもその中では使うことができない」ことを意味しています。

そこで、このVariableのScopeをSequence全体に変更しましょう。

“Data scraping”と書かれているところをクリックするとプルダウンが表示されますので、そこで”Sequence”を選択します。

これで設定変更は完了です。

取得データへのアクセス

下準備が整ったところで、いよいよ取得したデータにアクセスしてみましょう。DataTable型のVariableにアクセスするためには、「For Each Row」というActivityを使用します。

左の「Activities」ペインで「For Each Row」を検索し、”Recording Sequence”という大きいボックスの下にドラッグ&ドロップしましょう。(ちなみに、Data scraping”ボックスの直下に入れても全く同じ動作をしますが、今回追加するFor Each Rowは「Recording」するものではないため、”Recording Sequence”ボックスの外に出しておいた方が正しい構造を示す望ましい形になると思います。)

うまくドラッグ&ドロップできたら、追加されたボックスの中、右上の欄に取得したデータが格納されている”ExtractDataTable”を指定します。すると、ボックスは以下のようになると思います。

このボックスの意味は、「”ExtractDataTable”から1行抜き出して、”row”というVariableに入れる」→「”row”に対して、「Body」内の処理を行う」→「処理が終わったら、”ExtractDataTable”から次の1行抜き出して”row”に入れ、「Body」内の処理を行う」という操作をすべての行に対して繰りし行うということです。

ですので、取得したデータの中身を見てみるためには、この「Body」の中にデータを見るためのActivityを入れてやれば良さそうですね。

取得データの閲覧

ということで、実際に取得データを閲覧するActivityを追加してみましょう。ここでは以前紹介したWrite line Activityを使いたいと思います。

ActivitiesペインからWrite lineを選択し、「Body」内にドラッグ&ドロップして下さい。

そして、「Text」欄には”row(0).toString”と入力します。

この意味を説明します。

まず、”row”というVariableには、取得したデータの1行が丸々入っているのでした。そして、この1行は、「①タイトル」、「②URL」、「③概要説明」の3つの列から構成されています。これら列にアクセスするためには、”row”のあとに()を付けて、列番号を指定します。

ここで注意しなければならないことは、列番号は”0″から始まるということです。つまり、“row(0)”という表現は、「取得してきたデータ1行の中の、列番号0の「①タイトル」」を表しています

さらに説明を続けます。

実は、”row(列番号)”で取得したデータの種類は「Object型」という特殊なもので、そのままでは文字として表示することができません。表示するためには「String型」というデータ種類にする必要があるのですが、そのためには“row(列番号)”の後に”.toString”という文字を付けて、String型に変換する必要があるのです。

「For Each Row」内の処理についてまとめると、取得したデータのうち、「①タイトル」のみを全行分表示するというものになります。(なお、残りの「②URL」と「③概要説明」の出力は次回説明します。)

テスト実行

さて、一通り処理が組み上がったところで、試しに処理を実行してみましょう。UiPath上部の「Run」ボタンを押してみます。あ、Write line ActivityはOutputペインに文字を出力するのでしたね。なので、Outputペインが開かれていない状態であれば、UiPathウインドウ下部の「Output」という文字列をクリックして開いておいてください。

さて、実行した結果は、以下のようになるはずです。きちんと動作しましたでしょうか。

終わりに

今回の記事では、取得したWebサイトデータ(DataTable型)の中から、各サイトのタイトルのみをUiPathウインドウに出力するという処理を、お試し的に自動化してみました。

次回はこの取得したデータをCSVファイルとして出力する方法を説明したいと思います。