##はじめに
この記事はUiPath AdventCalender25日目の記事です。2021年もありがとうございました!!!
https://qiita.com/advent-calendar/2021/uipath
##注意事項
今回の解説で使用するのはCommunity Licence(コミュニティ版)です。
またUiPathのバージョンは2021.10.4で説明しています。
##Lookup Data Tableアクティビティとは
2018.2のバージョン以降に使用可能なアクティビティで、Datatable内の値を見つけたいときに使用します。
使い方:プロパティの項目が多くてわかりにくいですが、ひとまず以下の項目を埋められれば使用できます。
【Input】
Datatable:検索対象のDatatable
LookupValue:探したい値
【LookupColumn】
ColumnName:探したい値のある列名
【Output】
CellValue:TargetColumnの列から見つかった(取得した)値を格納する
見つからなかった場合はnullになります。
【TargetColumn】
ColumnName:取得したい値のある列名
##まずは慣れましょう
ここでは、「順位」列が"1"位のところにある「目標」列の値を取得してみようと思います。
★「MBA取得の第一歩」がログに出ればOKです。
こんな感じでフローを作っていきます(今回は一例なのでエラーハンドリングの対応はしていません)。
出ましたね!
では、次の問題に進みましょう。
##本題です
それでは、「目標」列に「UiPath」の値を含む項目を取得してみようと思います。
★「UiPathの資格取得?」がログに出ればOKです。
先ほどとの違いですが、LookupColumnのColumnNameとTargetColumnのColumnNameが同じ列になっています。
結果は...
あれれ、出ていませんね。。。
じゃあ、Input側のLookupValueの値を「UiPathの資格取得?」にしてみましょう。
結果は...
出ましたね!
つまり、LookUpDatatbleアクティビティは
探したい値と完全一致=取得できる
探したい値が含まれた値=取得できない(null)
ということになります。
##じゃ、対象の文字を含む値を探すには?
人によりやり方はあるのかもしれませんが、自分はこのやり方を採用することが多いです。
これはFor Each Rowアクティビティで変数dataaa(Datatable)をループして、列名「目標」のところに「"UiPath"の文字を含むものはあるか」という条件式を設定し、"UiPath"を含む値が見つかった場合は変数straaa(文字列)に値を格納してループを抜けるようにします。
(Elseは設定なし)
結果は...
取得できましたね!
##まとめ
Lookup Data Tableアクティビティを使う際は検索したい文言が「単語でくるのか」「文章で来そうなのか」を推測しておくことが大事ですね。
また今回はデモの都合上プロパティに設定した値がハードコーディング(設定値を直接書いています)になっていますが、外部の設定ファイルで設定しておき、変数で対応ができるようにしておくとよいと思います。
最後までお読みいただきありがとうございました。