StudioXについて学ぶ

UiPath SutioXの条件分岐【IfとSwitch】

2021/04/27

「人生は選択の連続」と、ある有名な劇作家は言いました。

現実世界でも選択することが普通なように、RPAのワークフローを組むにしても、条件によって処理を分けるケースは当然のようにあります。

逆に、たった一つのルートで完結する処理というのは、正直滅多に見かけません。

つまり、とても重要な内容だということ。

そこで今回は、処理を分ける「条件分岐」について解説しました。

この記事では、

StudioXの条件分岐ではどんなことができるの?

StudioXで条件分岐を組む具体的な手順を教えて。

こちらにお答えしていきます。

記事編集時のStudioX - ver2022.4.3

[条件分岐]アクション(単分岐)

条件分岐とは、「もし○○なら」という条件を追加する処理のことです。

一般社会でもいろいろありますが、例えば、

  • 箱根に行ったことはある?ない?
  • 20才以上?未満?
  • おやつはある?ない?
  • 糖質を含む?含まない?

まあ、いくらでも考えられますね。

例文は、いずれもYESかNOかに分かれるものです。

単語は覚えなくていいのですが、このようにひとつのテーマに対して、YESかNOかの2択で分かれることを単分岐と呼びます。

StiudioXで、単分岐を処理に組み込むためのアクティビティが、[条件分岐]アクションとなります。

[条件分岐]の定義

[条件ビルダー ] で追加された条件を評価して、条件が満たされた場合は、[Then] 分岐で指定されている 1 つ以上のアクティビティを実行します。
必要に応じて、条件が満たされない場合に [Else] 分岐で指定されている別の一連のアクティビティを実行します。

[条件分岐]をデザイナーパネルに追加すると、このようなボックスが表示されました。

見てのとおり、初期状態では"Then"のみが表示されています。

つまり、Yes(Then)の場合だけ処理することもできますし、[Elseを表示]させて両方のケースで処理を設定することも可能だということです。

Yes(Then)のみか、Yes(Then)No(Else)の両方かを選択できます。

条件の設定

[条件分岐]アクションのカギとなる、条件を設定する方法は6つ用意されています。

ひとつずつ見ていきましょう。

ノートブック

ノートブック(Excel)上で、条件のYesNoを判定する式を作ることができます。

具体的には、ノートブックのセルに、TRUEとFALSEという結果を表示させ、それを[条件分岐]アクションに設定することで分岐します。

幾つか、TRUEやFALSEを返すサンプルの式を用意しました。

例えば、条件に"スクラッチパッド!E2"を設定すると、Yes(Then)の分岐へ進みます。

対して、条件に"スクラッチパッド!E5"を設定すれば、No(Else)の分岐へ進みます。

もう1つ。実は数値も条件に設定できます。

この時、0以外(正の数/負の数)は、Yes(Then)、0はNo(Else)となります。

Excelの関数"COUNTIF"は、検索するテキストを含む場合その文字の位置番号を、テキストを含まない場合は0になります。

この性質を利用し、文字列を含めばYes、含まなければNoへ分岐できるわけですね。

TRUEと0以外・・・Yes(Then)へ分岐
FALSEと0  ・・・No(Else)へ分岐

True/False

明示的に、"True"か"False"かを指定します。

このメニューを使用すると、Then/Elseのどちらになるかが固定されるため、基本的に使用することはないでしょう。

ただ、開発の途中で、それぞれのルートを固定してテスト実行したい場合には使えそうです。

変数を使用

予め変数に格納した値を使用して判定します。

メニューには、変数の型がBoolean型のものが表示されます。

例えば、[変数の値を設定]で変数を作成する場合、"True または False"を指定した変数になります。

実行時に確認

処理を実行した時、[条件分岐]アクションの位置に来たら確認のメッセージボックスを表示し、ユーザーの判断でどちらへ分岐するか選択できます。

実行すると、このようなボックスが表示されます。

Yes(Then)の処理をしたい場合はTrueにチェック、No(Else)の場合はFalseにすればOKです。

実行する都度、人の判断が必要な時に使えそうですね。
おぐし

条件ビルダー

[条件ビルダー]を使う事で、直感的に条件式が作成できます。

では、[条件ビルダー]で、どのように作るのか見てみましょう。

[条件ビルダー]は、4つの項目で構成されています。

[比較される値]/[比較対象]

この2つの項目が比較されることで、条件がYes(Then)かNo(Else)かに分岐します。

指定できる値は以下の8つから選択できます。

これらの項目のうち、[日付/時刻]は更に3つの項目から選択します。

その中にある、[オフセットを選択]とは何でしょうか。

[オフセットを選択]

オフセットとは、「今日/現在時刻から、指定した分ずらした値」という意味です。

設定方法ですが、まず、[オフセットを選択]をクリックすると、更に[期間を選択]画面が表示されます。

この例では、[数]が"3"、[種類]が"Days"なので、「今日から3日後の日付」という事になります。

「3分後」のように時間(Hours)よりも小さい単位だったり、「翌月月初」のように少し複雑な日付などは条件ビルダーだと生成できません。この場合は、ノートブックで関数を作って参照するか、予め[日付を変更]アクティビティで算出した値を利用するといいでしょう。

[判定条件](演算子)

[判定条件]の項目は、正しくは[演算子]と呼ばれます。

選択できる演算子は以下の15項目です。

演算子 備考
次の値より大きい "[比較される値] > [比較対象]"の場合Yes(Then)となります。値は数値である必要があります。
次の値以上 "[比較される値] ≧ [比較対象]"の場合Yes(Then)となります。値は数値である必要があります。
次の値より小さい "[比較される値] < [比較対象]"の場合Yes(Then)となります。値は数値である必要があります。
次の値以下 "[比較される値] ≦ [比較対象]"の場合Yes(Then)となります。値は数値である必要があります。
次の値と等しい "[比較される値] = [比較対象]"の場合Yes(Then)となります。値は数値である必要があります。
空である [比較される値]が空(ブランク)である場合Yes(Then)となります。主にExcelのセルを判定します。
空ではない [比較される値]が空(ブランク)でない場合Yes(Then)となります。主にExcelのセルを判定します。
trueである [比較される値]がTRUEである場合Yes(Then)となります。主にExcelのセルを判定します。
falseである [比較される値]がFALSEである場合Yes(Then)となります。主にExcelのセルの値を判定します。
次の値で始まる [比較される値]が、[比較対象]の文字から始まるテキストである場合Yes(Then)となります。
次の値で終わる [比較される値]が、[比較対象]の文字で終わるテキストである場合Yes(Then)となります。
次の値を含む [比較される値]が、[比較対象]の文字を含むテキストである場合Yes(Then)となります。
数字である [比較される値]が、数値として認識できる場合、Yes(Then)となります。テキストとして入力していても、数値と判断できればYesです。
数字でない [比較される値]が、数値でない場合、Yes(Then)となります。

15項目の中から選択できますが、これは、大きく2種類に分かれます。

[次の~]で始まる項目名は、[比較対象]を必要とする条件です。

例えば、[次の値より大きい]を選ぶと、両方の値を選択する必要があります。

以下の例では、「シート[スクラッチパッド]のセルB2が、3より大きい」かを判定しています。

その他は、[比較される値]のみが表示されます。

こちらは、「シート[スクラッチパッド]のセルB2が、空である」かを判定しています。

B2に値の入力がなければ空として判定するのでYes(Then)、何か値が入力されて入ればNo(Else)ですね。

ノートブックのセルでは、[数字である]/[数字でない]の判定ができません。(ver2022.4.3時点)

[+追加]

複数の条件を重ねて判定する必要がある場合は[+追加]をクリックして、条件の行を追加してください。

条件を追加したら、すべての条件に一致(AND)したらYesとするのか、いずれかの条件に一致(OR)すればYesとするのかを選択してください。

暗黙的ではありますが、[比較される値]には、通常[ノートブック]()Excel)、[クリップボードから貼り付け]、[変数を使用]を指定します。

詳細エディターを開く

VB.NETのコードを記述できます。

[スイッチ]アクション(多分岐)

まず「多分岐」とは、ひとつの対象に対して3つ以上の選択肢がある場合を指します。

例えば、

  • 今日は何曜日?(日~土)
  • どの色にする?(赤,黄,青)
  • クラスは?(C,B,A,S,SS)
  • 年は何才代?(10代,20代,30代)

これも無限にありますね。

StudioXで、多分岐を組み込むアクティビティのひとつが、[スイッチ]アクションです。

[スイッチ]の定義

あらかじめ設定した条件に基づいて、複数のオプションの中から 1 つの操作を実行できます。
このアクティビティは、1 つの条件式と、case のコレクションで構成され、それぞれに対応するアクティビティ (1 つ以上) を記述します。
[条件分岐 (switch)] アクティビティは、条件式との一致に基づいて、コレクション内の 1 つの case を実行します。
条件がどの case とも一致しない場合は、[Default] の case を実行します。
[条件分岐 (switch)] アクティビティは、3 つ以上の case を条件でテストする必要がある場合に、 [条件分岐 (if)] アクティビティの代わりに使用できます。

[スイッチ]アクションを追加すると、以下のようなボックスになります。

アクティビティ追加後、対象となる値を決定する必要がありますが、これは[Expression]に設定します。

対象の値を設定

対象の値の型を設定

対象の値を設定する前に、[プロパティ]にある[TypeArgument]を確認してください。

[デザイナー]パネルの[スイッチ]アクションを選択した状態でプロパティを見てください。

[スイッチ]アクションの場合、対象となる値の型が何なのかを指定してあげる必要があります。

型の指定とは、「値がテキストか、数値かを明確にする」ことです。

テキストであれば"String"、数値(整数)であれば"Int32"を選択します。

そして、[TypeArgument]を変更することで、設定のメニューも変化します。

他にも選択できますが、おそらく使う機会はほとんどないでしょう。

更に言えば、テキスト(初期値)が最も使用頻度の高い型です。数値を使わないようであれば、対象の値を設定まで読み飛ばしても構いません。

設定メニュー - String

設定メニュー - Int32

その他に使いそうな型

プロパティで、規定ではStringとInt32が表示されていますが、[型の参照]から、他の型を指定することも可能です。

使いそうな型

  • True/False     ⇒ System.Boolean
  • 数値(小数点) ⇒ System.Double
  • 日付    ⇒ System.DateTime
  • 期間    ⇒ System.TimeSpan

型の設定方法

[方の参照...]をクリックします。 日付であれば[型の名前]に"System.DateTime"と入力します。
[OK]ボタンをクリックします。
[TypeArgument]に設定されました。
型に合わせて設定メニューも変わります。柔軟性がありますね。
おぐし

対象の値を設定

[TypeArgument]を設定したら、[Expression]を設定します。

値の候補を設定

候補は、[新しいcaseの追加]に入力していきます。

なお"Default"は、どの候補にも該当しなかった場合に通る分岐です。

サンプルに、クラスの候補、"C,B,A,S,SS"を追加してみましょう。

[新しいcaseの追加]をクリックします。 候補となる値(サンプルでは"C")を入力し、エンターを押下します。 [case]が追加されました。
続けて新しいcaseを追加します。
追加した候補の処理を先に編集しても構いません。
全てのcase"C,B,A,S,SS"が追加されました。

[スイッチ]アクションは、対象の値とcaseの値がイコールとなる(一致する)必要があります。

その為、少しばかり使いにくい部分があるかもしれません。

ただ、ひとつの対象に対して複数パターンの評価をする必要がある場合は、[スイッチ]アクションが読みやすいでしょう。

[条件分岐(複数分岐)]アクション(多分岐)

[スイッチ]アクションでは、評価する対象がひとつでした。

ですが、評価対象が別々の場合となるあるはずです。

例えば、

  • ジェットコースターの制限に引っかかるのは?
    1.年齢が10才未満または65才以上
    2.身長が130cm未満
    3.お酒を飲んでいる
  • テーマパークの入場料が無料なのは?
    1.年間パスポートを買っている
    2.年齢が3才以下
    3.テーマパークの従業員

などでしょうか。

1つ目の例だと、年齢、身長、飲酒の有無のように、評価対象がバラバラですね。

このようなケースでは、[条件分岐(複数分岐)]アクションを使用します。

[条件分岐(複数分岐)]とは

[条件ビルダー]を使用して追加された条件を評価し、条件が満たされたときに [Then] 分岐で指定された 1 つ以上のアクティビティを実行します。
条件が満たされない場合は、独自の [条件] と [Then] 分岐を含む [Else If] 分岐を追加できます。
複数の条件をチェックする必要がある場合は、複数の [Else If] 分岐を追加できます。
必要に応じて、アクティビティの最後に [Else] 分岐を追加できます。これは、前の条件がどれも満たされない場合に実行されます。

条件分岐の追加

[条件分岐(複数分岐)]をデザイナーパネルに追加すると、このようなボックスが表示されます。

初期状態では、"Then"のみが表示されていますね。

ここで、[Else Ifまたは Elseを]をクリックして"Else If"を選択すると、別の条件分岐が追加されます。

"Else If"は、必要な分だけいくつでも追加可能です。

そして、指定した条件すべてに当てはまらない場合の処理を追加する場合は、"Else"を選択します。

条件の設定

"条件"と、"Else If - 条件"で、条件を設定する方法は、[条件分岐]アクションと同じになります。

こちらを参照ください。

まとめ

この記事では、条件分岐のアクティビティである、[条件分岐]と[スイッチ]、[条件分岐(複数分岐)]アクションについて説明しました。

もしかしたら、[条件分岐(複数分岐)]アクションで、そのほかの条件分岐のロジックを組めることに気づいたかもしれません。

そうであれば、[条件分岐(複数分岐)]だけ使えばOK、という考え方もアリ。

ですが、ワークフローを見たときに、読みやすいのがどのアクティビティなのかで選んでみるのはいかがでしょうか。

まとめます。

まとめ

  • 条件分岐には、単分岐と多分岐の2種類がある。
  • 単分岐では[条件分岐]を利用する。
  • 多分岐では[スイッチ]、または[条件分岐(複数分岐)]を利用する。

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

-StudioXについて学ぶ

© 2024 おぐしログのRPA入門