こんにちは、Takaです。
今回は、UiPath のデータテーブルに関する基本操作についてご紹介します。
what you learn
UiPath 公式ページでは DataTable 変数について以下のように記載されています。
DataTable 変数は、大量の情報を格納できる変数の型の代表となるもので、行と列を持つデータベースまたは簡易スプレッドシートとして機能します。この変数の型は [参照して .Net の種類を選択 (Browse and Select a .Net Type)] ウィンドウで System.Data 名前空間 (System.Data.DataTable) の下で見つけることができます。
データテーブルにデータを格納する手段としては
がありますが、ここでは 1.手動で入力 と 2.Excel からインポート にトライしてみます。(Web スクレイピングからのデータ格納はまた別の機会に)
データを格納するためのテーブルを早速構築していきます。UiPath Studio を開き、新しくプロジェクトを作成して、アクティビティでシーケンスを追加します。
そして、アクティビティから「データテーブルを構築」を追加します。
データテーブルを定義します。プロパティで出力の「データテーブル」で右クリックをして「変数の作成」をクリックします。そしてテーブル名を定義します。
データテーブルをクリックすると、テーブルの列を定義できます。既定では Column 1(String) と Column 2 (Int32) が用意されているので、これらを Name (String) と Age (Int16) に変更します。
まず Column 1 の鉛筆マークをクリックします。列を編集する画面になるので、列の名前を入力して、「null を許可」のチェックを外し、必須項目とします。これでOKです。
次に Column 2 を編集します。同じように列の名前を入力して、データ型を「Int32」から「System.Int16」に変更します。年齢を入力する列で、Int32 だと大きすぎるので Int 16 に変えました。
設定後は以下のようになりました。
データテーブルの列を定義したら、今度は行に値を入れていきます。「データ行を追加」をアクティビティからシーケンスに追加します。
プロパティを開き、「データテーブル」に上記で作成したデータテーブル名を入力して、「列配列」で {}で囲って値を入力します。今回は簡単に{”Robert”, 34}と入力しました。
追加した行を出力してみます。繰り返し(各行)のループを追加して、
「要素」は row、「コレクション」をデータテーブル名とします。このループは、もしテーブルに行が複数入力されていたら、その行数回ループが実行される仕組みです。
ループ内で「メッセージをログ」を追加します。メッセージ内容は下図のようにしました
ループで取得した要素を使う場合は、 <要素名>.item(“列名”) (row.item(“Name”)) で取得して使えます。メッセージなので .ToString を最後に付けます。
保存して実行しました。以下のような結果が表示されています。
正しく表示されました。
「データ行を追加」は1行しか追加できないので、複数行入力するために While ループと入力ダイアログを使って、ユーザーで連続入力できるようにします。
まずは「入力ダイアログ」を追加します。
「出力」に変数をいれて、型は Generic Value のままにしておきます。
次に「繰り返し(前判定)」を追加して、「Condition」を先ほどの入力インプットの結果が NA 以外の場合はループを繰り返すとします。
※ ここでは InputName.ToString <> “NA” と設定しています。
実行します。下図のように Name に NA と入れるまで何度も入力ダイアログが表示されます。2回入力して、3回目に NA として終了させました。
結果を見ると正しくテーブルに追加されていました。
今度は Excel からデータを読み込んで、データテーブルを構築します。新しくプロジェクトを作成して、シーケンスを追加してからはじめましょう。
Excel アプリケーションを利用する端末には Excel がインストールされている必要があります。もしインストールされていないと、以下のようなエラーが実行時に表示されてうまくいきません。
Excel 関連の操作を行う場合は、まず該当の Excel のパスを定義する必要があります。「Excel アプリケーションスコープ」を追加します。ワークブックパスのところに読み込みたい Excel シートのパスを指定します。
下図のような Excel を読み込むこととします。
※ 1行目は自動的にタイトル行として認識されます。
もし読み込めなかったことを考えて、Try Catch を使います。Catch で System.Exception の設定をして、ログとして記録することにしました。
Try に「範囲を読み込み」を追加します。
入力で、「シート名」と「範囲」を設定します。ここでは、”Sheet1″ の “A1:B6” の範囲を読み込むことにしました。また、出力でデータテーブル名を変数として定義しています。
変数を開き、上記で設定したデータテーブルの「スコープ」を広げます。Try Catch 後にログとして結果を確認したいので、このように設定しました。
あとは、今までと同じように「繰り返し(各行)」でテーブル行の結果を表示させます。
実行してみます。
Excel に入力されていた値が正しく表示されました。
ここでは、ユーザー入力とExcelの読み込みによるデータテーブルの構築方法をご紹介しました。次は Web スクレイピングをした結果をテーブル化して活用する方法を調査してご紹介します。
それでは、今回はここまで。