Dictionary型を使ってExcelで簡単に変数を設定する方法を紹介します。
UiPathで変数を使うとなると、Variablesに書かなければいけないのですが、そうなると変数のDefaultの値を変えたい場合にワークフローを直接変更しなければなりません。それだと、UiPath Studioのライセンスがない端末だと変更がかけられず面倒なので、Excelで変数を管理できる方法を紹介します。
今回はDictionary型を使って実装します。
まず、前提として以下のようなExcelを準備します。
A列に変数名、B列にDefaultの値をいう感じです。C列は何の値を入れているかの説明なのであっても無くても処理には問題ないです。
最初にDictionaryを作成します。
VariablesにDictionaryの変数を作成します。
Nameには任意の名前をいれ、Variable typeでBrowse for typesを選択します。
Type NameにSystem.Collections.Generic.Dictionaryと入力し、Dictionaryを選択します。
keyにString、valueにObjectを設定し、OKをクリックします。(Key(A列)の型とValue(B列)の型をどうするかなので、String、Stringとかでも問題ないです。)
変数が作成できたら、Activities>Available>System>Activities>Statements>Assignを選択します。
Toに先ほど作成したDictionary型の変数名、Valueにnew Dictionary(of String, object)と入力します。
これで、Dictionaryの枠が完成したので、続いては、作成したExcelをRead Rangeで読み込みます。
(Read Rangeの使い方はこちらの前半をご参照ください。)
Workbook Pathに読み込みたいExcelのファイル名、Sheet Nameに読み込みたいExcelのシート名、RangeはA1からすべて読み込むので指定なし。
Add Headarsにチェックをつけて、OutputのDataTableにDataTable型の変数を設定します。
これで一旦、Excelの内容がDataTableに格納されました。
続いてFor Each Rowを使用して、DataTableの値をDictionaryにはめていきます。
(For Each Rowの使い方についてはこちらをご参照ください。)
先ほど作成したDataTableで回します。
Bodyの中にはDataTableの内容をDictionaryにはめていく処理をいれます。
まず、Assignを選択し、Toにディクショナリ変数(row(“名前”).ToString)、Valueにrow(“値”)と入力します。
ディクショナリ変数とは、先ほど作成したDictionary型の変数名、”名前”はExcelのA列の列名(Keyとなる列)、”値”はExcelのB列の列名(Valueとなる列)です。
これを実行すると、ディクショナリにExcelの値が格納されます。
ただこれだけだと、どうなったかわからないので、実際に表示させてみましょう。
dictionaryの使い方はディクショナリ変数(“Keyの名前”)で使用することができます。(Keyの名前とはExcelでA列に入力した内容となります。)
今回は以下のようにMessage Boxを設定してみます。
これを実行すると、以下のようにExcelで設定した値の内容が表示されます。
ワークフロー内で指定するのはKey(A列)のみなのでValue(B列)はExcelで自由に設定できるということになります。
ちなみに、UiPathが公式で提供しているREFrameworkでもDictionaryは使われています。
◆おまけ
・Add to dictionary
さきほどFor Each Rowの中でAssainを使ったところをActivities>Available>Microsoft>Activities>Add To Dictionaryを使用してみます。
Add Dictionaryを選択すると以下のような画面が出るので、TKeyはString、TValueはObjectを選択してOKを押します。
そしてPropatiesのDictionaryにディクショナリ変数、Keyにrow(“名前”).ToString、Valueにrow(“値”)を入力します。
これで、先ほどのAssignと同じようになります。
Dictionaryのアクティビティは他にもいろいろありますが、大体同じようにそのまま使えます。
・DictionaryのKeyを増やしたい。
Excelで読み込むだけでなく、ワークフロー内で増やすこともできます。
以下のようにAssignを設定し、Message Boxをいれてみます。
以上、Dictionary型を使ってExcelで簡単に変数を設定する方法でした。
Dictionary型を使うと、Invoke Workflowで別ワークフローを呼び出すときの引数がこれ1つで済んだりするので便利だったりします。