【できるUiPath】は注目のRPAサービス「UiPath」を使って、RPAのワークフローを作るための基本操作から、実際に業務をRPA化する実践テクニックまでを解説する連載です。
過去の記事一覧【できるUiPathまとめ】
条件分岐とフロー条件分岐
画面の値や文字から処理を分岐させるには
画面上の文字や値を読み取って、それを基準に処理が分岐するワークフローを作ってみましょう。[条件分岐]と[フロー条件分岐]の2つがあります。
[条件分岐]や[フロー条件分岐]を使おう
例えば、画面上に表示された金額を見て、一定額以上なら送料無料、以下だったら送料を追加というように、条件によって分岐する処理は珍しくありません。このような分岐には、[条件分岐]や[フロー条件分岐]を使います。
条件分岐
条件分岐はシーケンスの中で使うアクティビティです。条件によって計算方法が異なるなど、一連の処理の中で複数の方法を使い分けるときに活用します。
フロー条件分岐
フロー条件分岐は、フローチャートで使う分岐処理です。条件によって、まったく別の処理を2種類作成するときなど、大きな違いがあるときはフローで分岐させます。
HINT分岐の中にさらに分岐もできる
例えば、[条件分岐]の中に、さらに[条件分岐]を配置して、条件を絞り込んでいくことも可能ですが、使いすぎるとワークフローが複雑になり、後からの修正や変更が難しくなるので注意が必要です。
HINTこのレッスンで使う変数
このレッスンでは、次の変数を使います。ワークフロー内で登場する変数の用途を確認しておきましょう。chkType変数の使い方は、後述のHINT「3つ以上の分岐で使うアクティビティ」を参照してください。
chkPrice
型:GenericValue
用途:画面に表示された金額を格納し判断基準として使う
chkType
型:String(文字列型)
用途:見積や納品など分岐先の処理のタイプを格納する
HINTあらかじめ変数の型を変更してもいい
ここでは、chkPrice変数をGenericValue型に指定しておき、後から「CInt()」で整数型に変更していますが、最初から整数を格納することが明らかな場合は、あらかじめchkPrice変数をInt32型で定義しても構いません。その場合は、後からCInt()で変換する必要はありません。
ただし、Webページから値を読みとる場合など、ワークフローによっては、取得時はGenericValueにしておくと使い勝手がいい場合もあります。
[条件分岐]で処理を分岐させる
1画面に表示された値を読み込む
2[条件分岐]を追加する
3条件式を入力する
HINT変数の型に注意しよう
HINT文字列を比較するには
判断基準には、数値だけでなく、文字も利用できます。例えば、Webアプリの項目名を基準に処理を変えたり、画面上のメッセージに特定の文字が含まれている場合に処理を変えたりすることができます。文字列を比較する場合は、[Condition]に次の例のように指定しましょう。
なお、[Equals] と[Contains]はそのまま指定できますが、[StartsWith]は「.ToString」で明示的に文字列に変換してから指定します。
例:
・「立替」という文字列と一致するかどうか?
変数.Equals("立替")
・「替」という文字が含まれるかどうか?
変数.Contains("替")
・「立」という文字で始まるかどうか?
変数.ToString.StartsWith("立")
HINTEqualsでも指定できる
手順3では、条件式に「<>=」の演算子を使いましたが、一致の場合なら「chkPrice.Equals(100000)」のように、「Equals」を使うこともできます。
なお、数値の場合は、「()」に数値を直接入力しますが、文字列の場合は「("")」と「"」で囲みます。逆に数値を「("100000")」と指定すると、条件が文字列となり、内部的な型が一致しないため、同じ「100000」でも[Then]の処理が実行されません。
4[Then]に[メッセージ]を追加する
5メッセージを入力する
HINTElseにも処理を追加できる
手順5では条件を満たす場合(Then)の処理のみを記述しますが、条件を満たさない場合の処理が必要なときは、[Else]の部分にも処理を追加します。
HINT人が判断して分岐するには
自動化する業務によっては、処理の分岐に、人の判断を介在させることもできます。例えば、このレッスンのメッセージボックスをさらに条件分岐で囲んでから(条件分岐の中に条件分岐を配置し、内部の条件分岐の[Then]にメッセージボックスを配置した状態)、プロパティで[はい][いいえ]のボタンを表示するように変更します。
これにより、例えば、金額が10万円以上なのに、責任者の決裁を受けていない場合([いいえ]を選択した場合)に、業務アプリの[破棄]や[キャンセル]などをクリックして、処理を中断させることもできます。なお、[Ok][OkCancel][YesNoCancel][YesNo]など、表示できるボタンも変更できます
[フロー条件分岐]で処理を分岐させる
例えば、画面上に表示された金額が10万円以上と以下の場合で、操作するアプリや計算などの処理がまったく変わってしまうときは、フロー条件分岐で処理を分岐させます。
1[フローチャート]と[代入]を追加する
2[代入]の変数と値を設定する
3フロー条件分岐を追加する
HINT何を代入しているの?
ここでは、フロー分岐の使い方を主に解説します。このため、画面上の値を取得する処理は省略し、手順2で、[代入]を使って、判断基準となる金額を直接入力しています。フローチャートでも画面上の値を判断したいときは、[テキストを取得]を配置して、画面上の値を取得しておきましょう。
HINT[条件]に直接式を入力してもいい
ここでは、手順3で[...]をクリックして[式エディター]ダイアログボックスを表示しています。条件式が長くなるときは、式エディターを使った方が入力は簡単ですが、短い式で済む場合は、手順3で[条件]のプロパティに直接、式を入力してもかまいません。
4条件式を入力する
5分岐する処理を追加する
6[フロー条件分岐]と「True」の処理をつなぐ
7[フロー条件分岐]と「False」の処理をつなぐ
HINT[True]と[False]で分岐する
[条件分岐]では[Then]と[Else]で分岐しましたが、[フロー条件分岐]では[True]と[False]で分岐します。指定した条件式を満たす場合が[True]で、満たさない場合が[False]となります。分岐先を間違えないように注意しましょう。
HINT「Boolean」って何?
手順4の[式エディター]ダイアログボックスに表示される「Boolean(ブーリアン)」とはプログラミングでよく使われる基本的なデータ型の1つです。「True(真)/ False(偽)」のように、二者択一のデータを格納するときに使われます。
HINT複数条件を組み合わせて指定するには
[条件分岐]や[フロー条件分岐]では、[Condition]に複数の条件を指定できます。例えば、「CInt(chkPrice) >=100000 AndAlso CInt(chkPrice) <1000000」のように、2つの式を[andalso]でつなぐと、「10万円以上かつ100万円未満」という条件を指定できます。数値の比較と文字の比較を組み合わせるなど、いろいろな条件を指定できます。
HINT3つ以上の分岐で使うアクティビティ
[条件分岐]や[フロー条件分岐]は、分岐の選択肢が2つの場合に使えるアクティビティです。選択肢が3つ以上あるときは、[スイッチ]や[フロースイッチ]アクティビティを使います。例えば、Type変数の値が「請求」なら請求書処理へ、「見積」なら見積処理へ、「納品」なら納品処理に分岐させたりもできます。
なお、いずれの場合も、判断条件に使う変数の型を指定しておく必要があります。ここではString型を選択しますが、Stringを指定したときは、[Case]で条件を指定するとき、文字列であっても「""」は不要です。また、いずれの条件も満たさなかったときに選択される「Default」の指定も必要となります。[スイッチ]の場合は、標準の選択肢を[Default]の部分に登録し、[フロースイッチ]の場合はプロパティで[IsDefaultCase]にチェックマークを付けてください。
スイッチ
フロースイッチ
Point[Condition]を慎重に
UiPath Studioでは、[条件分岐]や[フロー条件分岐]を使えば、簡単に処理を分岐させることができます。このとき、ポイントになるのは[Condition]に指定する式です。この式が間違っていると、思い通りの結果が得られなくなります。変数の型が違うだけでうまく分岐しないので、慎重に設定しましょう。作成後、いろいろなパターンの値を使って、正しく分岐することを確認しておくと安心です。
提供:UiPath