スポンサーリンク

UiPath 入力ダイアログに複数項目を設定する

UiPathで入力ダイアログを使うときに入力する内容が長くなってしまうと毎回入力するのが大変になります。
そこで、全て入力させるのではなくセレクトボックスを配置して、入力内容を選択できるようにするための方法についてご紹介します。

スポンサーリンク

入力ダイアログ(InputDialog)にセレクトボックスを配置する

入力ダイアログにセレクトボックスを配置するには、プロパティの「オプション」を設定する必要があります。

Options – 選択すべきオプションの配列です。1 つの要素のみを含むように設定した場合は、テキストを書き込むためのテキストボックスが表示されます。2 つまたは 3 つの要素を含むように設定した場合は、要素がラジオボタンとして表示され、選択することができます。3 つより多くの項目を含むように設定した場合は、項目がコンボボックスとして表示され、選択することができます。このフィールドでは String Array 変数のみサポートされています。

UiPathドキュメントより)

上記に記載がある通り、String Array変数(String型の配列)のみセレクトボックスに設定できます。 実際には、どのように設定するのか説明していきたいと思います。

変数の作成

まずは、下記の表と同じように変数を作成し、設定してください。

変数名変数の型既定値
SelectListArray of<String>{“選択1″,”選択2″,”選択3”}
SelectValueString

入力ダイアログの配置

次に、入力ダイアログを配置します。
アクティビティ検索欄に「入力ダイアログ」と入力するか
システム -> ダイアログ -> 入力ダイアログから配置します。

配置が完了したら、下記の表を参考にプロパティ欄の設定を行います。

項目設定内容備考
オプションSelectList
タイトル“項目を選択してください。”表示される入力ダイアログのウィンドウ名
ラベル“選択項目”入力ダイアログ内に表示される文字列
結果SelectValue

テスト

テストで確認する前に、入力ダイアログの下に1行を書き込みを配置します。
デフォルト設定では、お気に入りにあるのでそこから配置します。
もしお気に入りに無い場合は、プログラミング -> デバッグ -> 1行を書き込みから配置してください。

配置が完了したら、SelectValueを入力します。

それでは、実行してみましょう。

セレクトボックスが表示され、選択した項目が表示されることを確認できました。
このように、選択項目が3つまではラジオボタン形式のセレクトボックスが表示されます。
4つ以上になると、コンボボックス(プルダウン)形式でセレクトボックスが表示されます。

画像では、SelectListの既定値を{“選択1″,”選択2″,”選択3″,”選択4”}に変更して実行しています。

これ以降はちょっとした応用について説明します。

DataTableの列をセレクトボックスに表示する方法

DataTableの列をセレクトボックスに表示するときって?

と思う方もいらっしゃると思います。例えばですが、画像のような売上表があったとして、実行する際に毎回違う商品コードや商品名ごとにデータを絞りこみたいという状況で使用します。

これくらいの商品コードや商品名であれば入力させるようにしても問題ないと思いますが、商品コードや商品名がもっと長い場合に入力ミスがあったりするため大変です。そんなときにDataTableの列からセレクトボックスを作成できると最初に選択するだけなのでとても便利です。

それではExcelやCSVファイルを読み込んで、DataTableの列からセレクトボックスを作成する方法についてご紹介します。

変数作成

まずは、下記の表と同じように変数を作成し、追加してください。

変数名変数の型既定値
ReadFilePathString
SalesDataTable
SelectRowListList<String>New List(of String)
DuplicateSalesDataTable

DataTableは変数の型 -> 型の参照DataTableと入力してSystem.Data.DataTableを選択してください。

List<String>は変数の型 -> 型の参照Listと入力して、System.Collections.Generic.List<T>を選択し、String型を指定してください。

variable.png

CSVファイルの読み込み

今回はCSVファイルを読み込んでセレクトボックスに表示したいと思います。
説明する方法を実際に作成して試してみたい場合は、下記からコピペしてCSVを作成してください。

売上コード,商品コード,商品名,値段,個数,売上金額
001,10,りんご,100,5,500
002,20,みかん,80,5,400
003,30,ばなな,120,2,240
004,20,みかん,80,3,240
005,30,ばなな,120,3,360

シーケンスの最初にファイルを選択を配置します。
アクティテビィ検索欄に「ファイルを選択」と入力するか
システム -> ダイアログ -> ファイルを選択から配置してください。

配置が完了したら、右側のプロパティ欄の「出力」にReadFilePathを入力します。

ファイル選択の下にCSVを読み込みを配置します。
アクティテビィ検索欄に「CSVを読み込み」と入力するか
アプリの統合(連携) -> CSV -> CSVを読み込みから配置してください。

配置が完了したら、右側のプロパティ欄の「ファイルのパス」にReadFilePathと入力し、「データテーブル」にSalesと入力します。 ヘッダーを含むにチェックが入っていない場合はチェックを入れてください。

読み込んだCSVファイルが文字化けしてしまう場合は、赤枠の「エンコーディング」に“shift-jis”と入力してください。

DataTableの列を指定する

セレクトボックスに表示したいDataTableの列を指定します。

まず、CSVを読み込みの下に代入を配置します。
デフォルト設定ではお気に入りにあるのでそこから配置します。
もしお気に入りに無い場合は、ワークフロー -> 制御 -> 代入から配置してください。

配置が完了したら、DuplicateSales = Sales.DefaultView.ToTable(True,"商品名")となるように入力します。

DataTable.DefaultView.ToTable(True,”列名”)重複行を削除し、表示する列を指定出来ます。
ToTable(False,”列名”)のようにFalseを入力すると、重複行は削除せず表示されます。
DataTableの必要な列だけを表示したいときはFalseを入力し、後ろに表示したい列名を入力することで不要列を削除することも出来ます。

次に繰り返し (各行)を配置します。
アクティテビィ検索欄に「繰り返し (各行)」と入力するか
プログラミング -> データテーブル -> 繰り返し (各行)から配置してください。

配置が完了したら、「コレクション」にDuplicateSalesと入力してください。

続けて、Body内コレクションに追加を配置します。
アクティテビィ検索欄に「コレクションに追加」と入力するか
プログラミング -> コレクション -> コレクションに追加から配置してください。

配置が完了したら、右側のプロパティ欄を下記の表と同じになるように設定します。

項目設定内容
TypeAugmentString
コレクションSelectRowList
項目row.Item(“商品名”).ToString

最後に繰り返し(各行)の下に代入を配置します。
配置が完了したら、SelectList = SelectRowList.ToArrayとなるように入力します。

最終的なシーケンス内のフロー図は以下の通りです。

テスト

それでは実行して見ましょう。
ファイル選択ダイアログが表示されるので、読み込むCSVファイルを選択してください。

DataTableの列をセレクトボックスに表示することが出来ました。
後は選択した項目がSelectValueに格納されるので、データテーブルのフィルタ機能を使い条件に商品名 = SelectValueとなるように入力すればデータの絞り込みが出来ます。

まとめ

入力ダイアログにセレクトボックスを表示したいときは、String Array変数(String型の配列)を用意し、プロパティのオプションに設定することで、セレクトボックスを表示できます。
DataTableの列を指定して表示するやり方を今回はCSVファイルから読み込んでやりましたが、もちろんExcelファイルでも同じように作成できます。

ここの説明がわかりにくい」や「こういった方法もありますよ」などがあればコメントしていただけるとありがたいです。その他のコメントもお待ちしております。

コメント