つまらない仕事はプログラムにやらせよう

ONE HUMAN UNIT

https://ciprogram.jp

【RPA】Blue PrismでCSVファイルを読み込んで項目をリプレイスしてみる。VBOの文字化けはコードステージを微調整

BluePrismでCSVファイルを一部リプレイスしたい

CSVを吐き出すシステムってあるけどさ、ユーザーが業務で使うときって

いろいろなカスタマイズが必要だよね。

もちろんCSVエクスポートの設計時に業務を加味したものを作るか、

あるいは業務をファイルにあわせるかすればいいんだろうけど。

ということで、作ってみましょう。

CSVを読みこんでリプレイスをかける

流れとしてはCSVを読み込んで変数に格納し、

変数に対してリプレイスをかけて

ファイルに保存するという流れです。

今回は1306 TOPIXインデックスファンドのcsvデータについて操作してみましょう。

▼こんなデータです。いやぁめっちゃ高くなってる。数年前は900とかだったのに……

まずはBlue PrismのVBO Utility - File Management:Read All Text from Fileで読み込む

▼読み込みたいCSVのパスを渡してやります

▼そして結果を受け取ります。

次に計算ステージでリプレイス

計算ステージでリプレイスをかけます。csvデータはread_result内に格納されています。

ret_patternに日付、new_textにdateを格納しておきます。

▼リプレイス。結果の保存先指定を忘れずに

では、リプレイス結果をUtility - FIle Management:Write Text Fileで出力

▼出力前に、元のファイルを消しておきます。まあ別名保存とかでもいいかもしれませんが。

▼そして、Utility - FIle Management:Write Text Fileでファイルを書き込みます。

▼そして汎用性を持たせるために、引数でファイルパス、リプレイス後文字列、リプレイス対象文字列を受け取るように設定しておきましょう。

よっしゃ実行。

余裕だな。これをループで回せばいいんだしね。

▼Opps! 文字化けてるじゃねーか。

▼ファイルを開けてみるとなんだかスのような文字がたくさん……

原因は文字コードに問題が……

▼既知の問題のようで……詳しくは下記ブログをご参照

Udemy APIコースの学習記録

はじめに SaaS利用が増えてきてAPIができたらデータの分析がはかどるのではないかと、APIの学習に着手。 データ流通基盤を作るのはなかなか道のりはながそう。 今まではBlue PrismでWeb ...

続きを見る

ということで、VBOのコードステージを手直し。

VBOをいじるときには別名で保存しておきましょう。Extendみたいな名前を付けてね。

対象のRead All Text from Fileを見てみると――

調べてみるとStreamReaderのコンストラクタはオーバーロードされていて、

第一引数しか与えないと暗黙的にUTF-8でエンコードされるそうな。

StreamReader(String)

完全なファイルパスは path パラメーターによって指定されます。 このコンストラクターは、エンコーディングを UTF8Encoding に初期化し、バッファーサイズを1024バイトに初期化します。

https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamreader.-ctor?view=netframework-4.8#System_IO_StreamReader__ctor_System_String_

あーはん。

エンコードを受け取るコンストラクタ StreamReader(String, Encoding) が用意されているようで、

そちらを使ってあげることで、csvの文字コードにあわせた形で読み込むことができます。

つまりこう!

ということは、エンコードも受け取れるように準備してあげたほうがいいか

あるいは、ShiftJIS以外のRead All Text from Fileも作っておくか、検討の余地はありそうです。

▼そして読み込むのを新しく用意したVBOを使います。

▼そして実行。ちゃんと読めている。

▼文字化けしていない! やったぜ

▼Oh…… つまり、書き込むときの文字コードもあかんかったのね。なんだか絶句みたいな感じで文字化けてるし。竈を囲んだよう文字もあるしわけわからん。

▼ということで、Write Text Fileもエンコードを変えてやって

▼無事リプレイスされた。

 

ちょっと癖あるな。

 

 

  • B!