UiPath カスタム入力 アクティビティ
カスタム入力は任意の構成の入力用ダイアログを表示するアクティビティです。
同様な機能の入力ダイアログでは一つの項目しか入力できませんが、
カスタム入力では複数の項目を入力することが可能です。
本来、このアクティビティの利用にはHTMLとJavascriptの知識が必要ですが、
そうでなくても活用できるツール(Excelブック)を
用意して誰でも利用できるようにしています。
この記事ではその使い方と機能を紹介します。
アクティビティの使い方
「システム」、「ダイアログ」より「カスタム入力」をシーケンスの中にドロップし、
キー入力の内容を受け取るためのString型とString[]型変数(配列)を宣言します。
![「システム」、「ダイアログ」より「カスタム入力」をシーケンスの中にドロップ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-238.png)
String[]は変数の型よりArray of [T]を選択します。
![変数の型よりArray of [T]を選択](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-239.png)
型の選択ダイアログでStringを選択すればString[]型に設定できます。
![型の選択ダイアログでStringを選択](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-240.png)
入力用フォームの作成とプロパティ設定
次に入力用フォームを作成します。
それにはこちらのExcelブックをダウンロードします。
まずテキストボックス、セレクトボックス、ラジオボタン、チェックボックスの
4つのシートに入力項目を設定していきます。
![フォーム用作成マクロ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-246.png)
テキストボックスシートではキー入力項目を設定します。
ここには№と項目名と横幅を指定します。
№には他のシートの№も通して番号を指定してください。
途中で途切れたり無効な値を入力すると全ての項目が作成されません。
![テキストボックスの設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-247.png)
この設定では下のように入力項目が作成されます。
![テキストボックスの表示](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-248.png)
セレクトボックス、ラジオボタン、チェックボックスは
複数の項目から選択するオブジェクトです。
ラジオボタンとセレクトボックスは複数の項目から1項目のみを選択し、
チェックボックスは複数選択するオブジェクトです。
シートの設定内容は全て同じです。
№と項目名はテキストボックスと同様ですが、項目1~20に選択項目を指定します。
![セレクトボックスの設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-249.png)
![セレクトボックスの表示](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-252.png)
セレクトボックスはラジオボタンと同様、単一選択ですが、
フォームの見た目がコンパクトになるため
選択肢が多かったり、表記が長い場合に有効です。
![ラジオボタンの設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-250.png)
![ラジオボタンの表示](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-253.png)
ラジオボタンも単一選択です。全ての項目を表示したい場合に有効です。
![チェックボックスの設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-251.png)
![チェックボックスの表示](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-254.png)
チェックボックスは複数選択の項目です。
結果は|(バーティカルバー)で区切った形式で受け取るため、
項目1~20に|を使用しないようにして下さい。
全ての項目が設定出来たら基本シートに戻り、
フォームHTMLを作成ボタンをクリックします。
ファイル保存ダイアログが出るので、
作成するツールのxamlファイルがあるフォルダに保存します。
![フォームHTMLを作成ボタンをクリック](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-255.png)
次にカスタム入力にプロパティを設定します。
![カスタム入力にプロパティを設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-258.png)
入力-URIにフォーム用HTMLをします。
デザイナーパネルの…ボタンで選択可能です。
結果には入力結果を受け取るためのString型変数を指定します。
このツールを起動すると下のような画面が表示されます。
まず黄色のセキュリティ表示をクリックして制限を解除してから値を入力していきます。
![セキュリティ警告の表示されるフォーム](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-259.png)
値を入力したら完了ボタンを押下します。
![フォームに入力した状態](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-260.png)
すると結果に指定した変数に入力結果が格納されます。
![入力結果](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-268.png)
この記事のマクロを使用した場合、
それぞれの項目はタブ文字で区切られ、
チェックボックスの選択項目は|で区切られます。
一つの文字列では利用できないため
この文字列を加工して項目ごとに分割する必要があります。
入力値の受取と加工
まず入力項目ごとに分割します。それには代入アクティビティを使用します。
![入力結果をタブ文字で分割](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-262-1024x211.png)
左辺値(To)にはString[]型変数を指定します。
右辺値(Value)に下のように指定します。
入力結果.Split(ControlChars.Tab)
この指定でタブ文字を配列に分割されます。
そして繰り返し(コレクションの各要素)を利用し各要素(項目値)を処理します。
繰り返し(コレクションの各要素)のプロパティの
TypeArgumentにStringを指定し、コレクション値にString[]変数を指定します。
これで1つの要素ごとに繰り返し、それぞれに対して処理を行っていきます。
本来はExcelやデータベースに書き込むことになりますが、
今回は1行を書き込みで出力ウインドウに表示します。
![繰り返し(コレクションの各要素)の設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-263-1024x479.png)
繰り返しごとにカウントアップするInt32型の入力項目カウンターと
繰り返し(コレクションの各要素)の要素に指定した
項目入力値(タブで区切られた各要素)を表示します。
![1行に書き込みの設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-264-1024x304.png)
結果はこのようになります。
![出力プロパティの設定](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-269.png)
チェックボックス以外はこれで処理できます。
複数選択で|で区切られているチェックボックスは
場合によってはこちらも加工する必要があります。
それには条件分岐を設置しチェックボックスのタイミングを
Conditoinに設定します。今回はこのように指定します。
項目入力値.IndexOf("|") > 0
IndexOfは指定文字が何文字目かを調べるメソッドです。
指定文字が含まれていないと0になるため
それ以上では指定文字があると判定出来ます。
複数選択されて分割が必要な場合は
|が含まれるためこの条件でチェックボックスを検出できます。
![条件分岐にチェックボックスの要素の条件を入れる例](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-273.png)
次に代入アクティビティで分割します。
タブ区切りと同様の方法で|で分割します。
新たなString[]変数を宣言して左辺値(To)に設定し
右辺値にこの数式を設定しましょう。
項目入力値.Split(”|”c)
SplitメソッドはChar型のためcの指定が必要です。
![|で分割する代入メソッド](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-274-1024x234.png)
このString[]変数をタブ区切りと同様、
繰り返し(コレクションの各要素)にかければ
個々のチェックボックス選択値に対して処理が可能です。
![|区切りを繰り返し(コレクションの各要素)で処理](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-275-1024x585.png)
![チェックボックスを分割した例](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-272.png)
サンプルxaml
この記事で使用したツールのxamlファイルです。
こちらをダウンロードして流用すると設置の手間を省くことが可能です。
プロパティ
共通
表示名を設定します。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-243.png)
表示名はデザイナーパネルに反映されます。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-245.png)
入力
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-242.png)
入力フォーム用のHTMLを指定します。
HTMLとJavascriptの知識がある場合は任意で調整可能ですが、
先述のExcelブックで知識がなくても利用可能にしてあります。
出力
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-244.png)
入力フォームからデータを受取る変数を指定します。
受け取る形式はJavascriptの知識がある場合は任意で調整可能ですが、
先述のExcelブックで知識が可能でも利用可能にしてあります。
オプション
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/01/image-241.png)
入力フォームのウインドウの大きさを指定します。
その他
UiPathのログに引数や変数の値が表示されるかを指定します。
機密性の高い情報を取り扱う場合にのみチェックする必要があります。
![プライベートのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/10/image-246.png)