UiPathの条件分岐完全ガイド:If文とSwitch文を使い分けてスマートな自動化を実現
UiPathの条件分岐(If文・Switch文)の使い方を基礎から実践まで解説。シーケンスとフローチャートでの実装方法、複数条件の組み合わせ、エラーハンドリングとの連携まで詳しく説明します。
この記事で学べること
- UiPathにおける条件分岐の基本概念と種類
- If文とSwitch文の使い分け方法
- シーケンスとフローチャートでの実装手順
- 複雑な条件設定と最適化テクニック
- エラーハンドリングとの連携方法
条件分岐とは?UiPathにおける重要性
条件分岐は、プログラムの実行フローを条件に応じて分岐させる仕組みです。UiPathでは、業務の状況に応じて異なる処理を実行するために不可欠な機能です。
条件分岐が活用される場面
データ処理の自動化
売上金額に応じた承認ルートの振り分けや、顧客ステータスによる処理の変更
エラー処理・例外対応
ファイルの存在確認や、システムの状態に応じた処理の継続・停止判断
ワークフローの最適化
時間帯や曜日による処理の変更、リソースの可用性に応じた処理分散
ユーザー入力の処理
フォームの入力値による処理の振り分けや、選択肢に応じた後続処理の実行
UiPathの条件分岐の種類
UiPathでは主に2つの条件分岐方法があります。
1. If文(条件分岐)
特徴:2つの処理パスに分岐(True/False)
条件式の結果
├── True → Then部分の処理を実行
└── False → Else部分の処理を実行
If文の使用場面
- ファイルの存在確認
- 数値の大小比較
- 文字列の一致判定
- Boolean値による処理制御
2. Switch文(スイッチ)
特徴:複数の処理パスに分岐(多分岐)
Expression(式)の値
├── Case 1 → 処理A
├── Case 2 → 処理B
├── Case 3 → 処理C
└── Default → どのCaseにも該当しない場合の処理
Switch文の使用場面
- ユーザーの選択肢による処理振り分け
- ステータスコードによる処理選択
- 曜日や時間帯による処理変更
- 部署やカテゴリによる処理分類
If文の実装方法
シーケンスでのIf文実装
条件分岐アクティビティの追加
アクティビティパネルで「IF」と検索し、「条件分岐」アクティビティをドラッグ&ドロップします。
条件式の設定
条件プロパティに判定したい式を入力します。
# 基本的な条件式の例
# 数値比較
変数A > 100
# 文字列比較
文字列変数 = "成功"
# Boolean値
フラグ変数
# 複合条件
年齢 >= 20 And 年齢 <= 65
Then・Else部分の処理設定
- Then:条件がTrueの場合に実行する処理
- Else:条件がFalseの場合に実行する処理
各部分にシーケンスやアクティビティを配置します。
フローチャートでのIf文実装
フロー条件分岐の追加
アクティビティパネルで「フロー条件分岐」を検索し、フローチャートに追加します。
条件とフローの接続
Start
↓
フロー条件分岐
├── True → 処理A
└── False → 処理B
各分岐から後続の処理を接続します。
条件式とラベルの設定
プロパティパネルで:
- 条件:判定式を入力
- TrueLabel:True分岐のラベル(デフォルト:True)
- FalseLabel:False分岐のラベル(デフォルト:False)
実践例:ファイル存在確認
# 条件式
File.Exists("C:\temp\input.xlsx")
# Then部分(ファイルが存在する場合)
メッセージボックス: "ファイルが見つかりました。処理を開始します。"
# Else部分(ファイルが存在しない場合)
メッセージボックス: "ファイルが見つかりません。処理を終了します。"
Switch文の実装方法
シーケンスでのSwitch文実装
スイッチアクティビティの追加
アクティビティパネルで「switch」と検索し、「スイッチ」アクティビティを追加します。
Expression(式)の設定
分岐の基準となる値を設定します。
# 例:ユーザー入力による分岐
ユーザー選択
# 例:日付による分岐
DateTime.Now.DayOfWeek.ToString()
# 例:ステータスコードによる分岐
レスポンス.StatusCode
TypeArgumentの設定
プロパティパネルでTypeArgumentを設定:
- String:文字列
- Int32:整数
- DateTime:日付
- その他の型も選択可能
Caseの追加と処理設定
「新しいcaseの追加」をクリックして分岐を追加し、各Caseに処理を配置します。
フローチャートでのSwitch文実装
フロースイッチの追加
「フロースイッチ」アクティビティをフローチャートに追加します。
分岐の接続
フロースイッチから各Caseへの接続を行います。
Note
フロースイッチは最大12個のCaseまで接続可能です。
Case設定
各接続線のプロパティで:
- DefaultCaseDisplayName:Case名
- IsDefaultCase:デフォルトケースかどうか
実践例:曜日による処理振り分け
# Expression設定
DateTime.Now.DayOfWeek.ToString()
# Case設定
├── "Monday" → 週次レポート作成
├── "Tuesday" → データバックアップ
├── "Wednesday" → 在庫チェック
├── "Thursday" → 売上分析
├── "Friday" → 週次総括レポート
└── Default → 通常処理(土日)
複数条件と高度な分岐テクニック
Else If の活用
複数の条件を順次チェックする場合は「条件分岐(Else If)」を使用します。
Else If:複雑な条件式や範囲指定が必要な場合に使用 Switch:固定値での分岐が明確な場合に使用
例えば、売上金額による承認ルート設定では、「10万円以下」「10-50万円」「50万円以上」といった範囲指定が必要なためElse Ifが適しています。
複合条件の書き方
# AND条件(両方とも真)
年齢 >= 18 And 年齢 <= 65
# OR条件(どちらか一方が真)
部署 = "営業" Or 部署 = "マーケティング"
# NOT条件(否定)
Not 文字列.IsNullOrEmpty(顧客名)
# 複合条件
(ステータス = "有効" And 契約期限 > DateTime.Now) Or 特別フラグ
エラーハンドリングとの連携
条件分岐は Try-Catch と組み合わせることで、より堅牢な自動化を実現できます。
パターン1:事前チェックによるエラー回避
# Try-Catch内での条件分岐
Try
├── 条件分岐: File.Exists(ファイルパス)
│ ├── Then: Excelファイル読み込み処理
│ └── Else: エラーログ出力 + 処理終了
└── Catch
└── 予期しないエラーの処理
パターン2:エラー後の復旧処理
Try
├── システムログイン
└── データ取得処理
Catch
├── 条件分岐: リトライ回数 < 3
│ ├── Then:
│ │ ├── リトライ回数 + 1
│ │ ├── 5秒待機
│ │ └── 再試行
│ └── Else:
│ ├── 管理者通知
│ └── 処理終了
パターン3:段階的フォールバック
第1段階:メイン処理
通常のシステム接続を試行
第2段階:代替手段
接続失敗時は別のAPIエンドポイントを使用
第3段階:手動対応
すべて失敗した場合は管理者に通知して手動対応
実践的な業務シナリオ
シナリオ1:請求書処理の自動化
受信した請求書PDFを金額に応じて適切な承認ルートに振り分ける自動化プロセス
処理フロー:
- 請求書PDFから金額抽出
- 金額による承認ルート判定
- 適切な承認者への通知
- 承認状況の記録
シナリオ2:顧客サポートチケットの自動振り分け
インテリジェントなチケット振り分け
問い合わせ内容を解析して、最適な担当部署に自動振り分けする仕組み
キーワード解析による分類:
# キーワードによるSwitch分岐
Switch (問い合わせカテゴリ)
Case "技術サポート"
# キーワード: "エラー", "バグ", "動作しない"
→ 技術サポート部に振り分け
Case "料金・請求"
# キーワード: "料金", "請求", "支払い"
→ 経理部に振り分け
Case "新機能要望"
# キーワード: "機能追加", "改善", "要望"
→ 開発部に振り分け
Default
→ 一般サポートに振り分け
パフォーマンス最適化のベストプラクティス
1. 条件の順序最適化
効率的な条件配置
頻度の高い条件を先に配置することで、処理効率が大幅に向上します。
例:売上データ処理の場合
- 通常売上(80%)→ 最初の条件
- 特別割引(15%)→ 2番目の条件
- 例外処理(5%)→ 最後の条件
2. 複雑な条件式の分割
# 悪い例:複雑すぎる条件式
(顧客.年齢 >= 20 And 顧客.年齢 <= 65 And 顧客.職業 = "会社員" And 顧客.年収 >= 3000000) Or (顧客.会員ランク = "プレミアム" And 顧客.契約年数 >= 3)
# 良い例:段階的な判定
一般条件満足 = (顧客.年齢 >= 20 And 顧客.年齢 <= 65 And 顧客.職業 = "会社員" And 顧客.年収 >= 3000000)
プレミアム条件満足 = (顧客.会員ランク = "プレミアム" And 顧客.契約年数 >= 3)
条件式: 一般条件満足 Or プレミアム条件満足
3. 変数の適切な使用
判定結果の一時保存
頻繁に使用する判定結果は変数に保存して再利用します。
ファイル存在 = File.Exists(ファイルパス)
# 以降、この変数を条件として使用
スコープの適切な設定
変数のスコープを必要最小限に設定し、メモリ使用量を最適化します。
型の明確な指定
曖昧な型(Generic Value)ではなく、具体的な型(Boolean、String等)を使用します。
トラブルシューティング
よくあるエラーと解決方法
原因:変数がNull値の状態で比較演算を行っている
解決方法:
# 悪い例
変数A = "テスト"
# 良い例(Null チェック追加)
Not String.IsNullOrEmpty(変数A) And 変数A = "テスト"
確認ポイント:
- TypeArgumentが式の型と一致しているか
- Case値が正確か(文字列の場合、大文字小文字も含めて完全一致)
- Default Caseが設定されているか
デバッグ方法:
# 式の値をログ出力して確認
メッセージをログ: "Switch式の値: " + 式.ToString()
最適化手法:
- Early Return:不要な処理をスキップ
- 条件の順序最適化:頻度の高い条件を先に配置
- ネストの削減:深い入れ子構造を避ける
- 変数の活用:計算結果の再利用
まとめ
UiPathの条件分岐を効果的に活用することで、より柔軟で堅牢な自動化プロセスを構築できます。
重要なポイント
適切な分岐方法の選択
- 2分岐:If文
- 多分岐(固定値):Switch文
- 多分岐(複雑条件):Else If文
エラーハンドリングとの連携
Try-Catchと組み合わせて、予期しない状況にも対応できる仕組みを構築
パフォーマンスの考慮
条件の順序最適化と変数の適切な使用でプロセスの効率化を図る
保守性の確保
分かりやすい変数名と適切なコメントで、後からの修正や拡張を容易に
次のステップ
条件分岐をマスターしたら、以下の関連トピックも学習することをお勧めします:
- [ループ処理との組み合わせ]:繰り返し処理内での条件判定
- [データテーブル操作]:大量データの条件付き処理
- [Orchestrator連携]:サーバー上での分散処理制御
効果的な条件分岐により、あなたの自動化プロジェクトはより価値のあるソリューションへと進化するでしょう。
💭この記事はいかがでしたか?
あなたの感想やご意見をお聞かせください。今後のコンテンツ改善の参考にさせていただきます。
📤この記事をシェア
この記事が役に立ったら、ぜひ他の人にも共有してください!
⚠️ 記事の内容は投稿時点での情報です。最新の情報については公式サイト等でご確認ください。
🔄 内容の正確性には注意を払っていますが、誤りがある場合はお知らせください。