Enterprise Blue Ocean ◮

神谷町RPAブログ

  • Blue Prism 初級者向け
    • Blue Prism を 無料で利用する 方法はこちら
    • Blue Prism の Blue Prism 事始め!オンボーディングの記事はこちら
    • Blue Prism で Excelを操作 する記事はこちら
  • Blue Prism、ちょっと進んだコンテンツ☆
    • Blue Prism の ベストプラクティス 記事はこちら
    • Blue Prism の 逆引きナレッジ wiki こちら
    • Blue Prism を リアルタイムで起動する 方法はこちら
  • RPA、そもそも論!
    • Youtube で、あらためて振り返る RPA とは?・・・はこちら☆

Blue PrismでExcelを操作する<詳細版⑦> Excelで使うFile Management、Collection Manipulationのアレコレ

*** 注意 ***
  • この記事は、コーディング(プログラミング)の話題を含みます。
  • 苦手な方はブラウザバックをお薦めします。
  • あ、でも .NET のプログラミング経験がなくても、読めないことはない、そのくらいの難度です。
*** ** ***

 

Utility - File Management: Read All Text From File の文字化け

BPA Object - Utility - File Management は、わりと見ため通りに動きます。

素直な感じで、見よう見まねで使っていけます。

そんな File Management の注意点は、やっぱりというか、文字コードです。

例えば、以下でも使ったアクション: Read All Text From File ですが、ファイルの中身がUTF-8 以外の文字コードだと文字化けします。

ebo.hatenablog.com

例えば、入力ファイルを Shift JIS で保存して

f:id:EnterpriseBlueOcean:20181228233646p:plain

Read All Text From File で取り込むと、以下のとおり。

f:id:EnterpriseBlueOcean:20181230160938p:plain

ブェー(断末魔)

 

Read All Text From File の文字化け対策

そもそも、ファイルの文字コードをUTF-8に変えて、すべて保存しなおす…これ自体を自動化することも可能です。

夜中にスケジュール入れて、寝ている間にやっといてもらいますか。

ただ、そうもいかない場合は、Read All Text From File を複製して、新しいアクションを作ってしまうのも手だと思います。

Read All Text From File の中身は、

…StreamReader(File_Name)…

という形でストリームからファイルを読み込んでいるので、文字化けしちゃうわけです。

たとえば、以下のようにコードを変えれば、

…StreamReader(File_Name, System.Text.Encoding.GetEncoding("shift_jis"))…

ファイルの中身が Shift JIS でも、文字化けせずに読み取ることができます。

 

Collection Manipulation の Filter Collection

Collection Manipulation については、これまで何度も記事で言及してきました。

ebo.hatenablog.com

ebo.hatenablog.com

ebo.hatenablog.com

アクションによっては大変、個性的ですが、素直に扱えるアクションもあります。

Sort Collection とか。

これは列を選んで昇順/降順にソートできます。

https://pbs.twimg.com/media/C_sv1G-UAAA9Drt.jpg

 

エッ…と思ったのが、Filter Collection かな。

 

Filter Collection

コレクションをフィルター(特定のセルの値で絞込)します。

Filter Collectionの入力

  • Collection In: 入力されるコレクション
  • Filter: フィルターするためのクエリ…クエリ?

Filter Collectionの出力

  • Collection Out: フィルター結果のコレクション

 

クエリ…クエリって何?

天下り的な説明で恐縮ですが、結論から言うと、以下のように設定すると動作します。

"コレクションの列名 = 'フィルターしたい値'"

複数の値でフィルターしたければ、例えば以下のような感じです。

"列名1 = 'フィルターしたい値A' OR 列名2 = 'フィルターしたい値B'"

 

…こうなる理由は、結局、Filter Collection の中が、

…Collection_In.Select(Select_Condition)…

となっているからですね。

Collection_In というのは System.Data.DataTable で、DataTable Select メソッドを使っています。

Microsoftの公式ドキュメントだと、以下のように説明されています。

docs.microsoft.com

Select メソッドの引数である Filter Expression の説明は以下の通り。

DataView RowFilter Syntax [C#]

ANDとかORだけでなく、INとかも使えるわけですね。

この辺りの説明は、特に Collection Manipulation の中にはないように思います。

いや別にソース読めばいいじゃん的なスタンスを、Collection Manipulation からビンビン感じるんだよなぁ。

it.srad.jp

まぁ確かに、VBOの中身なんて、そもそも大したプログラムじゃないし、.NET のプログラミングをやったことがない私でもソースをギリギリ読めるレベルではある。

ただ、ちょっと個性的なアクションについては、多少の補足説明があった方が良いんじゃないかなぁ。

 ※ 個人の感想です

 

Collection Manipulation の Transpose Collection

Transpose Collection という名前から、コレクションが転置できるのでは?

…と思うじゃん?

違います。

何かもう疲れてきたので、詳細は省きますが、Transpose Collection横ベクトル(一行のコレクション)を、縦2列のコレクションにすることしかできません。

入力が縦ベクトルとか、コレクションの場合は、転置できません。

 

まとめ

  • Blue Prism で Excel を扱う場合、File ManagementCollection Manipulation のお世話になることがある
  • File Management文字化けに注意
  • Collection Manipulation個性的なので、いろいろ注意
  • .NET のプログラミング経験がなくても、Blue Prism のVBOのコードは読めないこともない

私が社会人になった頃は、プログラマーというのは単価が安く、したがって賃金も安く、割の良い仕事ではないという風潮でした。

プログラマーの人は、早くステップアップしてSEとかPMとかコンサルになれ、みたいなキャリアパスが、世間に広まっていたような気がします。まぁ、別にそういうパスでも良いんですけど。。何かプログラミングが軽く扱われているような。。

しかし、

  • 海外(特に米国?)ではプログラマーは専門職であり、給与水準も高い
  • クラウドやCI/CD技術の進化によりプログラマが活躍しやすくなった(はず)
  • AI人気の高まり

により、日本でもプログラマに脚光があたってきた…んですかね?

小学校でプログラム教育が必修になるようですし。

一般の業務ユーザーでも、Blue Prism の標準VBOのコードを見て、自分好みにちょっと改修するような時代が来るのかなぁ。

(もう来てるのか?)