StudioXのアクティビティ

UiPath StudioXのファイル/フォルダーアクティビティ【フォルダー - 参照】

2021/12/23

フォルダーは、ファイルを整理するために必要ですよね。

ファイルを格納するフォルダーを予め決めておけば、誰もが目的のファイルを見つけやすくなる。

特に説明せずとも、誰もが知っていることでしょう。

フォルダーのアクティビティのうち、参照に関するアクティビティに絞って紹介します。

この記事では、以下のアクティビティについて解説します。

記事編集時のStudioX - ver2021.10

フォルダー - 参照のアクティビティ

  • フォルダーの存在を確認
  • フォルダーを参照
  • フォルダー情報を取得
  • 繰り返し(フォルダー内の各フォルダー)

フォルダーの存在を確認

指定したフォルダーが存在するかどうか確認します。(ガイドはこちら)

指定したフォルダーが存在すれば、結果にTrueを返し、ファイルがなければ結果にFalseを返します。

ここでは、以下の項目について解説します。

  • フォルダーパス
  • 出力結果

フォルダーパス

有無を確認したいフォルダーのパスを指定します。

[フォルダーを参照]では、既に存在するフォルダーしか指定出来ません。

存在しないフォルダー名を指定したい場合、はどうすればいいでしょうか。

一番シンプルなのは、[+]-[テキスト]で、フォルダーのパスを直接入力することですね。

出力結果

フォルダーの有無の結果について、どこに記憶するか指定します。

フォルダーが存在すればTrue、存在しなければFalseとなります。

[出力結果]の活用

フォルダーの存在を確認し、[出力結果]がFalseだった場合、その後にどんなアクションをするか考えてみます。

恐らく、「フォルダーがない」とのメッセージを表示するか、指定のフォルダーを作成するかのどちらかが大半ではないでしょうか

例題で、「フォルダーがない場合はメッセージを表示させる」をStudioXで組むと、以下のようになります。

この構成には2つの工夫をしています。

まず、フォルダーパスを[後のために保存]で名前を付けて保存し、2つのアクティビティで利用していること。

こうすることで、フォルダーパスが変わった時に、修正が1か所で済むようになります。

もうひとつは、[If]の条件を"falseである"にしていることです。

falseにすれば、[Elseを表示]を展開する必要がないので、見た目もスマートですね。

簡単な工夫ですが、後日修正が必要になることを考え、少しでもスリムな構成になるよう心掛けておくといいでしょう。

フォルダーを参照

後で使用するフォルダーを選択するためのダイアログ ボックスを、実行時に開きます。(ガイドはこちら)

自動処理中に、操作対象とするファイルを都度指定できるダイアログボックスを表示します。

処理するフォルダーが決まっていなかったり、自動でフォルダーの指定が難しいケースなどで、役に立つでしょう。

ここでは、[選択したフォルダーパス]について解説します。

選択したフォルダーパス

選択したフォルダーのパスについて、どこに記憶するか指定します。

フォルダー情報を取得

指定したフォルダーのプロパティを取得し、プロジェクト内で後で使用するために情報を保存します。(ガイドはこちら)

フォルダーのプロパティ情報を取得し、名前を付けて記憶します。

記憶した名前から取得できる情報は、以下6項目です。

  • ファイル
  • フォルダー
  • 名前
  • フルパス
  • 最終更新日
  • サイズ(KB)

項目名だけだと、どんな情報なのかが少し分かりにくいので、後ほど具体的に説明します。

ここでは、以下の項目について解説します。

  • フォルダーパス
  • 出力先
  • フォルダーが存在しない場合例外をスロー

フォルダーパス

情報を取得したいフォルダーを指定します。

出力先

選択したフォルダーのプロパティ(情報)について、名前を付けて記憶します。

取得したプロパティ情報について

[出力先]で指定した名前には、6つの情報が格納されます。

どんな情報が格納されているのか見てみましょう。

例として、以下のようなフォルダー構成を用意しました。

出力先"フォルダー情報"からは、以下の値が取得されました。

項目名
ファイル 3
フォルダー 1
名前 サンプル
フルパス C:¥Users¥ogushi¥Desktop¥サンプル
最終更新日 12/20/2021 17:01:16
サイズ(KB) 1701.52

項目名"ファイル"と"フォルダー"について、簡単に補足を。

"ファイル"は、指定したフォルダー内にある、ファイルの数を指します。

この時、サブフォルダー内も検索してカウントします。

"フォルダー"は、指定したフォルダー内にある、フォルダーの数ですね。

ファイル同様、サブフォルダー内のフォルダーも検索してカウントします。

フォルダーが存在しない場合例外をスロー

チェックON(True)にすると、指定のフォルダーがない場合に処理を中断します。

他のアクティビティで[エラー発生時に実行を継続]という項目が用意されていますが、それと機能としては真逆です。

目的は同じと言ってもいいでしょうね。
おぐし

繰り返し(フォルダー内の各フォルダー)

指定したフォルダー内の各子フォルダーに対して、含まれるアクティビティを1回ずつ繰り返します。(ガイドはこちら)

指定したフォルダー内にある各フォルダーを、1フォルダーずつ読み取りながら、処理を繰り返します。

読み取ったフォルダーの処理は、[ここにアクティビティをドロップ]内へ、組んでいくことになります。

ここでは、以下の項目について解説します。

  • 繰り返し
  • フォルダー
  • サブフォルダーを含む
  • 名前でフィルター
  • 並べ替え順

繰り返し

現在の周回のフォルダー情報を記憶する名前を指定します。

既定では"CurrentFolder"ですが、必要に応じて意味を表す名前に変更するとよいでしょう。

フォルダー

検索するフォルダーを指定します。

サブフォルダーを含む

指定したフォルダー内に、更にフォルダーが存在する場合、チェックOnにするとその中のフォルダーまで参照します。

例えば、以下のようなフォルダー構成を用意し、チェックOnとチェックOFFの違いを出力してみました。

 

出力パネルに表示される結果は、以下のようになります。

チェックOFF チェックON

チェックON時の、"サブ2-1"と"サブ2-2"の並びが、名前順とは逆になっていました。現時点の精度は、今一歩なようです。

名前でフィルター

取得するフォルダー名のフィルター条件を指定して、対象を絞り込みます。

フィルター条件ですが、ワイルドカード(*や?)による条件ではなく、正規表現で指定します。

正規表現とは、ワイルドカードよりも、更に詳細な条件を指定できる構文です。

正規表現の構文について、ここでは扱いませんが、こちらのサイトで分かりやすく解説されています。

VBAで正規表現を利用する(RegExp)

正規表現ビルダーを活用する

正規表現は、汎用的に使える知識ではあるもの、深堀してまで細かく覚える必要がない人も多いはず。

実は、正規表現を分かりやすく作成できるビルダーが、UiPath Studioには存在します。

せっかくなのでそちらを利用して、構文を作成するといいでしょう。

[プロパティ]パネルの
"開発者向けアクティビティを表示"を
チェックONします。
[開発者]-[プロブラ民具]-[文字列-[一致する文字列を取得]を
[デザイナー]パネルにドラッグします。
[正規表現を設定]をクリックします。
正規表現ビルダーが表示されます。
[完全式]にあるテキストが正規表現の構文になります。

構文を作成し終えたら、追加したアクティビティは削除してください。

正規表現ビルダーの詳しい使用方法は、公式ガイドが参考になります。

正規表現ビルダー ウィザード

ビルダーを使えば、直感的に分かりやすく正規表現の構文が作成できます。
おぐし

正規表現の例

以下のフォルダー構成に対して、正規表現でフィルターをいくつか構文を作りました。

フィルターの意味 正規表現の構文
(ワイルドカードでの表記)
結果
サブ1-1で始まる ^サブ1-1.*
(サブ1-1*)
サブ1-1
サブ1-1-1
サブ1-1-2
サブ?-1 ^サブ¥d-1$
(サブ?-1)
サブ1-1
サブ2-1
2-1を含む .*2-1.*
(*2-1*)
サブ1-2-1
サブ2-1
サブから始まり2-2で終わる ^サブ.*2-2$
(サブ.*2-2)
サブ1-2-2
サブ2-2
サブ1、サブ2 ^サブ[12]$
(表記不可)
サブ1
サブ2

[サブフォルダーも含む]をチェックONにした場合、最後のフォルダー名のみフィルターで評価されます。

ver2021.10.4時点で、アクティビティには存在しますが、公式ガイドには掲載されていない項目です。

後でガイドに追記されるのかな?
おぐし

並べ替え順

対象となるフォルダーについて、読み込む順番を指定して反復処理を実行します。

7項目の並べ替えの中から指定できます。

まとめ

フォルダーを参照するアクティビティは、ファイルに関するアクティビティと組み合わせることで、かなり汎用的なロジックが組めそうですね。

まとめます。

まとめ

  • [フォルダー情報を取得]の[フォルダーが存在しない場合例外をスロー]は、チェックONにするとエラー時に処理を中断する。
  • [繰り返し(フォルダー内の各フォルダー)]の[名前をフィルター]は、正規表現で指定する。

この記事で、何か1つでも新しい発見が得られたのなら、僕もうれしいです。

-StudioXのアクティビティ

© 2024 おぐしログのRPA入門