
【いきなりStudio17】(ソース・テンプレート編)Configファイルの読み込みでガチろう④~シートは、業務側がやらかすミスを想定してガチる~業務担当者がやらかすトップ3(三大巨頭)
さてと、前回
で、
可読性が向上するIF文の書き方
については説明したので、今回はそれも踏まえて、
全シート取得後に、ロボットを安全にこかす作法
を見てく( ´∀` )
んだば早速
前回までのソース

ブックの全シートを取得アクティビティ
基本的な知識は
を参考にしてな( ´∀` )
早速、解説
まあ、ブレークポイントを

全シートを取得直後に入れて、
ファイルをデバッグ


値が入っているので~~~
Listの中身を見てみると、

ここでポイント①:業務側の担当者がやらかすトップ3
これは、これまでの記事で何回も書いていることかもしれないけど、UiPathの知識がない担当者が、
部署内での共有不足
前任者の引継ぎ不足
しっかり引継ぎや共有をしても、「そんなことは起きないだろう」(プロスペクト理論)てゆー安易な思い込み
無意識な操作ミス
などで引き起こす
【やらかす三大巨頭】
Configファイルを格納したフォルダ自体が指定のパスから消える(フォルダ移動や削除、フォルダ名の変更)
Configフォルダは存在するが指定した名前のConfigファイルが存在しない(ファイルの移動、削除、ファイル名の変更)
Configフォルダに指定した名前のConfigファイルも存在するが、内容が変わっている(ファイルを誤って削除してしまい、ファイル名は分かるので、新しいファイルを追加して、名前だけを変えた、一部シートだけ指が当たるなど無意識で消してしまい、復活できないなど)
で、よくロボット開発者側の心理であるのが
自分たちの常識=相手も分かっていて当たり前
↓
共有もしてるし、まさかそんなヤツおらんし、業務的にあり得ない
↓
こんな確認は入れなくていいやでリリース
↓
業務側でやらかしてるが、「そこの確認を何故入れてないんだ!」=非機能要求がなっとらんで業務側のロボット管理者激オコ(# ゚Д゚)
↓
そこの確認を入れるためだけに、業務を停止+再パブリッシュでロボットのバージョンをひとつ上げる羽目に、、、👀💦( ;∀;)
👉安易に思い込まずに最初から
確認は入れておけ( ´∀` )
何度もゆーてるけど、この【いきなりStudio】シリーズでやっている
ガチり
👉ロボットを安全にコカしつつ、
Studioで快適に遊ぶ作法
だからね( ´∀` )てことで、今回は、3、を詳しく実際にどうしたらいいかを見ていこう( ´∀` )
ファイルの中身が変わってるにどう対処するか❓👀
てお題を振ったとき、経営学でゆーところの【知の深化】=物事をどうしても小難しく、ややこしくしたがる=職人とかプロとか思い込んでる自称さん
小賢しい優等生( ´∀` )
だと、
「Configフォルダのバックアップフォルダを取っておいて、実行前に毎回バックアップフォルダから、前回のConfigファイルをコピーして、上書きして、実行し、ロボット全体の処理が終わる度に、今回使ったConfigファイルをバックアップフォルダにコピーして上書きしちゃえばいい」
みたいなことをゆーんだけど、これって以下の問題があるんだよね( ´∀` )例えば、
バックアップフォルダ自体が消えたらどうする
バックアップフォルダ自体はあるもののフォルダの中身が消えたらどーする
バックアップフォルダも中身も存在するが、バックアップしたファイルのみが存在しない場合どーする…
てな感じで
①業務側がやらかす根本原因である、Configファイルが何かよく分かっていないってことを認識してない
②管理するフォルダやファイルが複数に増える以上、管理がさらに面倒になる
👉目先のリスク回避するつもりで、却ってロボットがコケるリスクを増やしてるだけ( ´∀` )
てか、「Configファイルとかロボットに関するフォルダは勝手に触るな!」って事前に伝えても、触っちゃう・フォルダを移動しちゃうのが業務側の担当者で、そのリスクを回避するためにやるのに、
バックアップフォルダを増やして、そこだけは絶対に触るなって周知したところで、それで触らない、移動しない組織なら、そもそもConfigファイルの段階できちんと管理してるだろ( ´∀` )
お客さんなんて、上記みたいなことをいくら周知したところで
「Configファイルが格納されたConfigフォルダ自体は言われた通り、触ってないし、何もしてないです。」
「じゃあリモートで格納フォルダを確認しますね。…」
Configフォルダ自体を格納したさらに上のフォルダの
名前が変わってる/移動してるやん( ´∀` )
👉まあ、たしかにこっちがゆーたとおり、
ConfigフォルダやConfigファイル自体はなにも触ってない
=何もしてないね( ´∀` )
👉日本語て難しい
てなことになるので~~そんなややこしい対処を入れても効果は薄いし、正直、
意味はない( ´∀` )
じゃあ、一番シンプルで簡単な方法は❓
実は、めちゃくちゃ簡単で、そのConfigファイル内に必ず存在するシート名が、
取得したsheetsリストの中に含まれるか
を確認するだけ( ´∀` )

Conditonの詳細エディターを開く





sheets.Contains("セレクター")
ここでポイント②:設定後の条件がTrueになっているかを確認する
条件を一度指定した後で


完全一致になっていることを確認
なっていれば、キャンセルで閉じる
フレームワークの設定とかUiPathの一時的な不具合とかタイミングで、ここが次の値を含むとかになっていると、挙動が変わることがあるので注意してね~~~( ´∀` )
後は、ThenとElseにそれぞれこれまでの記事と同じ要領で、
メッセージをログアクティビティやThrowアクティビティなんかを追加


さっきと同じ状態でブレークポイントそのまま、Main.xamlタブを選んでから、ファイルをデバッグを実行すると

エラー時のテスト
MKakuConfigファイルを他のフォルダに退避してから、

ファイル名をそのままに


Sheet1シートを追加後、
今までのシートを全部消す
この状態でファイルを上書き保存して、再度、ファイルをデバッグすると

このまま続行すると~~~

ロボットが終了したね( ´∀` )
一歩前へ:RPAでしか使わないシート名を指定する
ここでよく勘違いする人がいるんだけど、これってあくまでも、
指定した値をどこかのシートに存在するか
にしてるだけだから、

セレクターみたいなRPA以外でほぼ登場しないような名前のシート以外を指定した場合、

業務担当者が、保存先のフォルダを勘違いして誤って、

MKakuConfigファイルに上書きしてしまった
このままロボットを実行すると、あくまでも指定した名前のシートが存在するかを見ているだけだから

エラーにならないんだよね( ´∀` )
なので、
UiPathとかRPAでしか使わない
=他の業務ではなかなか存在しない
シート名を指定しておいた方が良い
ってのが分かると思う( ´∀` )
※オイラは、10年以上エンジニア業界に生息してるけど、他の業務で
セレクター
てシート名を他の業務で見た事ないぞ👀💦
さてと、内容は以上なんで、
恒例のソース・リファクタリング
■リファクタリング前
今回は、

■リファクタリング後


てな感じ( ´∀` )
冒頭に入れたブレークポイントも外して、ソース全体

さてと、次回は、
今回やったところ以降の、

各シートの値を読み込む処理について説明してくや( ´∀` )
ここは、今回紹介したトップ3(三大巨頭)の3番目が尾を引く処理なので~~~そこの対処も併せて説明してく。
と、おそらく年末年始は、
でも触れたとおり
VBAのテスト作業ツールの記事を
一気に書くつもり
なんで
UiPathの記事は、
今年はこれが最後かな( ´∀` )
UiPath関連の記事だけを読んでくれてる人は、今年はこれが最後かもしれないので、
来年もよろしゅう( ´∀` )
とか言いつつ、10連休なんで、
余力があれば、記事を書いてるかも( ´∀` )
ま、いったんここで、
良いお年を( ´∀` )