
【UiPath StudioXの遊びかた 7】逐条編④フォルダの存在確認で遊ぼう~ファイル操作をしたいなら、まずはフォルダから確認しよう〜スローもないのかStudioX👀の衝撃‼️
さてと前回
で、
ソースの可読性を上げつつ、安全にソースを管理する手法
まで説明したところで、
より実践的な各アクティビティの遊びかた
に入ってこう💃
では早速~~~
少し前の記事
で、UIpathみたいなロボットでやる殆ど操作って
”圧倒的に
CSVファイル
エクセルファイル
WEB
を扱う作業が多いんだけど、”
って書いたんだけど、UIpathにしろ、他のプログラミング言語でもやり始めたばかりの人で多いのが、
でも紹介したとおり、
せっかちで、やりたい操作にすぐに飛びつき、飛躍論法な行動思考な人
さて、ここで問題です。
例えば普段、エクセルの操作を何かしらしようと誰かに指示するときに、いきなりエクセルでやらせたい操作だけを伝えますか?
まずは、
Excelファイル自体を渡す
どこかの共有サーバーのフォルダに入っているExcelのフルパスを渡す
でやりませんか?
ここでポイント①そもそもExcelって
ファイルてデスクトップも含めたどこかのフォルダに必ず格納されているもの
つまりいくらロボットで操作しようとしても、
ファイル自体が存在してない。
ファイルが年次の異動なんかで移動したり、新しいフォルダに移ってしまった。
ファイル自体は異動前の前年度のフォルダにあったので、ロボットは正常に実行できたけど、更新対象ではないファイルに更新をかけてしまった。
嘘のようでどこの現場でもある話なんだけど、いずれも
求めていた結果(期待値、クリティーク)的には全てエラーか失敗
にしかならないので、
エクセルに何かの操作をやらせる場合、まずは、ファイルやフォルダー自体の確認からやる=前準備は非常に大切。
てかロボットで安全にやりたいなら当たり前の作法( ´∀` )
☞開発時にココをすっ飛ばして、数か月後に困ったちゃんになっている人は、経験年数にかかわらずよく見ます=センスのない人( ´∀` )
なのでここでは、まずエクセル操作の大前提になる
フォルダーの存在確認から見てく💃
フォルダーの存在を確認アクティビティとは、
いつもどおり



出てきたヤツを左クリック


■[プロパティ] パネル内
共通
表示名 - デザイナー パネルに表示されるアクティビティの名前です。
入力
パス - 「アクティビティの本体」の「フォルダー パス」をご覧ください。
その他
プライベート - 選択すると、アクティビティで使用したデータが StudioX のログに記録されなくなります。
出力
存在の有無 - 「アクティビティの本体」の「出力結果」をご覧ください。
■アクティビティの本体
フォルダー パス - フィールドの横にある [参照] アイコンをクリックし、確認するフォルダーを参照して選択します。または、フィールドの右側にあるプラス記号をクリックしメニューから、確認するフォルダー パスを指定するオプションを選択します。
プロジェクト ノートブック、親の Excel ファイル、または Outlook アカウントからのデータ。たとえば、Excel ファイルを選択してフォルダー パスを含むセルを選択するか、または Outlook で選択されているメールからフォルダー パスを含むフィールドを指定します。
保存された値を使用 - プロジェクトで後で使用するために以前保存したフォルダー パス形式の値を選択します。
テキスト - テキスト ビルダーでフォルダー パスを入力します。テキストに Excel ファイルのセルの数式を結合できます。たとえば、プロジェクト ノートブックの数式を使用して、フォルダー名に日付を追加できます。
実行時に確認 - プロジェクトの実行時にフォルダー パスの入力を求めます。
詳細エディターを開く - VB の式を入力します。

出力結果 - フィールドの右側にあるプラス記号 をクリックして、メニューの選択可能なオプションから、結果 (フォルダーが存在する場合は TRUE、フォルダーが存在しない場合は FALSE) の保存先を指定するオプションを選択します。
Excel ファイルまたはプロジェクト ノートブックを選択し、結果を保存するセルを選択します。
後で使用するために保存 - この出力結果を、プロジェクトで後で別のアクティビティの入力として使用します。
詳細エディターを開く - VB の式を入力します。

てことが分かり、ここも色々出来そうだねえ👀
操作
とまあ、ここは、それぞれの設定の仕方が殆どなので、単純にまずは、

前年度まで動いていたロボットって想定して、

テキストを左クリック

ちゃんと確認が出来たかを知りたいので、

メッセージボックスには変数で値を渡してあげる必要があるので~~~

変数を作成を左クリック

OKを左クリック


実行してみると、

なので、前回までで使ってた条件分岐アクティビティを



さらに、フォルダがない場合には確実に処理をエラーにするのが安全だし、作法なので、ロボットを確実にこかす
Throwアクティビティ
を使いたかったんだけど、
StudioXには見当たらない( ´∀` )
なんじゃそら、ナメてんのか( ´∀` )
なので、メッセージボックスを

実行すると、

フォルダを移動して、指定のパス直下には

再実行すると、

しかし、UIpath Studioと違って、スロー処理しない以上、処理は続くので~~~


長くならざるを得ないこの作り、、、恐ろしい('Д')
さてと、今回は以上なので~~~
ブラッシュアップ
外出し出来るものは外出し
要らない確認用のアクティビティを削る
変更後に再実行でちゃんと動くか確認
っていつもの作法で安全性を高めとこう💃








再実行してみて~~~

と、ここできちんと判定が効いてるか再度確認で、


ノートブックの値を変えるだけで
きちんと確認できた
以上、ブラッシュアップも完了💃
ここでポイント②外出しのタイミング
ここ何回か癖付けしてほしいのでブラッシュアップを丁寧にキャプチャを取りながらやってるんだけど、外に出すタイミングは、
やりたいソースの単体機能が
期待値どおりに動いてるって検証が終わった直後
でOK。
何もかも直打ちダメだからって思って、最初からノートブックに外出ししようとする☞作業が増えて面倒くさいし、効率悪い。
逆に、全部のやりたいこと=全部の処理が出来てからでいいや~~で後回し☞直打ちした箇所が増えすぎて、収拾がつかなくなり結局やらない
ってことになりかねないからね👀
🌟ひとつの処理(ログインならログイン処理)が通しで期待値通りだった
☞外出しのタイミング
って程度の認識でOK
ここでポイント③前回の記事で確認用の不要なアクティビティは消すってゆーたけども、
今回のフォルダーの存在を確認アクティビティは、
後続の判定処理でも使って、
安全にロボットを処理させるのに必要な処理なので、残してるし~~~
って感じ。
何が不要か必要かについては、
アクティビティって素材でカレーを最終的に作りたいのか、肉じゃがを作りたいのかくらいの判断基準
☞同じ具材を使うにしても、カレーであればカレー粉がいるけど、料理酒と醤油は要らないかもしれないし。
ま、そこらへんについてはコンストラクション=設計の考え方なので、
あたりを参考にしてみてね。
前処理=準備
本処理=やりたいこと
後処理=確認、検証
って発想( ´∀` )
ま、今回の記事ってミクロな見方をすれば、フォルダの存在を確認アクティビティは本処理だけど、後続でファイルの存在を確認して、存在確認後のファイルに何かをしたいのであれば、前処理ですらないからね~~~( ´∀` )
今回のソース

関連リンク
さてと、次回は、
フォルダの存在確認の次なんで、
ファイルの存在を確認アクティビティ
でもやろうかねえ( ´∀` )
どのアクティビティも組合せとか順番次第なんで、
どれからやってもそれに合わせて変更したら問題なし。
何事も杓子定規に考えて揚げ足取りに走っちゃだめよ~~
臨機応変、変幻自在、融通無碍☞天衣無縫
って感覚で何ごともおおらかにやっとくのがちょうどいいからね
んだば、今からGW最後を温泉で〆るので、続きはまた次回
ま、気楽に不定期に他にやることないってときだけ
やるので次は盆休みかもね~~~( ´∀` )
オイラの記事なんかで学ぼうとする暇があったら簡単に動かせるローコードツールなんだから、バックアップだけとって自分で動かせばいいよ( ´∀` )