きっかけ
UiPathのExcelモダンアクティビティでの繰り返し処理を行う際に「繰り返し(Excelの各行)」を使用しますが
あれ?繰り返しの内の処理を外部ワークフロー化する手順ってどうするんだろう?
という疑問が沸いたので、検証してみました。
前提
下記内容はExcelモダン、ワークフローファイル抽出、引数等ついて知識がある前提となっています
外部ワークフローファイル化したい理由
軽くだけ、なぜ外部ワークフローファイル化したいのかも一応触れておくと
ネストを深くしたくない
フローの階層が深くなると、劇的に可読性が落ちます
自分で作ったフローを一月後に見返したら嫌気がさすレベルです
エラー処理(try catch)を入れたい
上記のネストの話とも関係しますが、Excel一覧を処理させるプロセスでは、エラーが出た行のデータは異常終了させて、後続の行は処理継続させたいケースが多いと思います。
となると、繰り返し内にtry catchを入れて、エラーハンドリングしたいけど、直でtry catchを繰り返し内に入れるとネストが深くなるということもあり、ワークフローファイル化したくなります。
入出力
下記の様なExcelデータを読ませて、計算結果列に、「入力値 × 5」の値を返すだけです
普通に組んだ場合
ワークフローファイルへ切り出し
抽出できましたが、CurrentRow変数が定義されてないので、エラーになります
引数を定義して、呼び出し側で引数を渡してやる必要があります
ドキュメントに情報がないので、代入アクティビティの左辺にCurrentRowを入力して、マウスオーバーすると「UiPath.Excel.CurrentRowQuickHandle」型であることが分かる
(他にも調べる方法あるかも)
まとめ
従来だと下記の様に処理していて、Excelモダンでの行データの渡し方が不明でした。
これでExcelモダンの利用範囲が広げられそうです。
従来処理方法
⓵Excelをデータテーブル型変数へ読み込み
⓶繰り返し(データテーブルの各行)でループ
⓷ループ内の本体をワークフローファイルへ切り出し、引数はDataRow型を使用