第3回では、Power Automate for desktopの特徴でもある、UI要素のセレクター編集を使った最適なフロー作成について解説しました。
最終回の第4回では、クラウドフローとAI Builderという機能を活用した業務プロセス全体の自動化の例と、その方法について解説します。
Power AutomateはWindows 11に標準搭載されているRPA機能の
有償ライセンスでは便利な機能は数多く用意されていますが、今回は業務プロセス全体の自動化についてフォーカスして解説します。
今回作成するフローの全体像
今回は注文書をメールで受領し、AI OCRによって読み取ったデータを売上登録するまでの流れを解説します
作成するフローの想定する業務の流れは次のとおりです。
- ① お客様より注文書をメールで受領する
- ② 受領ファイルはクラウドストレージの所定フォルダーへ保存する
- ③ メールで受領した注文内容をもとに出荷処理を行う
- ④ 売上情報をシステムへ登録する

今回もフローを作成するにあたり、前回までと同じように以下のサイトを使います。
また、クラウドフローと連携するため、Power Automateにもアクセスできることを確認します。Power AutomateのWebポータル画面のURLは以下です。
なお、今回紹介するフローの作成環境は以下のとおりです。
- OS:Windows 11 Pro
- Power Automate for desktop:2.
27. 00186. 22340 (2022年12月更新のストア版) - ブラウザー:Microsoft Edge
- ライセンス:
- Microsoft 365 E3
- Power Automate per user with attended RPA plan
AI Builderとは
AI Builderは、利用者が独自のAIを構築できるMicrosoft Power Platformの機能の一つです。利用者は誰でも簡単に要件にあわせたAIを構築し、Power AutomateやPower Appsなどとも連携し、業務プロセス全体の自動化を図ることが可能になります。

AI Builderができることは以下のとおりです。 ※2023年2月時点
- ドキュメント解析
(AI OCR機能) - 名刺データのデータ化
- 請求書データのデータ化
- 領収書データのデータ化
- パスポートや免許証などの身分証明書のデータ化
- テキスト解析
- テキストデータからの感情分析
- テキストデータの言語検出
- キーフレーズ抽出、分類
- 言語翻訳
- 画像解析
- 画像データからの物体検出
- 構造化データ解析
- 蓄積された履歴データから将来予測
詳しくは、Microsoft LearnのAI Builderの概要を参照してください。
なお、AI Builderを使うためには、Power AppsやPower Automate、Dynamics 365の有償ライセンスを保有している必要があります
AI Builderを使ってみる
Power AutomateやPower Appsを使用し、構築済みのAIモデルをすぐに利用できます。
今回は事前構築済みのモデルを利用し、注文書データの読み取りをしてみましょう。用意したシンプルな注文書のデータが、AI Builderのページでどのようにデータ化されるか確認してみます。
はじめにPower AutomateのWebポータル画面へアクセスします。そしてメニューからAI Builderのタブを展開し、

次に


結果を確認してみましょう。


なお、今回利用した
また

AI Builderを使ったクラウドフローを作成する
確認したAI Builderの請求書モデルを実際のフローの中に組み込んでいきます。
はじめにPower AutomateのWebポータル画面から、作成ページを開きます。

自動化したクラウドフローを選択し、新規にフローを作成していきます。
選択すると、
検索窓に
なお、新しいメールが届いたとき
また、フローを実行するためのイベントのことをPower Automate

フローの作成画面が開いたら、
トリガー内の

詳細オプションを展開すると、トリガー条件のメール受信フォルダー設定の他に、宛先や差出人、件名での条件、添付ファイル付きかどうかなどの条件を設定できます。今回は以下のとおりに設定します。他のメールでトリガーしないようにしておきます。
- フォルダー:Inbox ※受信フォルダーの意味です
- 添付ファイルを含める:はい
- 件名フィルター:
【Gihyo4】 注文書 - 添付ファイル付きのみ:はい

添付ファイルをOneDrive for Businessに格納する処理を追加します。新しいステップをクリックし、以下のとおりアクションを追加します。
- コネクタ:OneDrive for Business
- アクション:ファイルの作成
- フォルダーのパス:/
(ルートフォルダ)
※OneDrive for Businessの直下に格納します。所定のフォルダーがあれば所定フォルダーを指定します - ファイル名:添付ファイル名
- ファイルコンテンツ:添付ファイルコンテンツ
(新しいメールが届いたとき)

設定が完了したら一旦フローを保存します。

最後に、AI Builderコネクタの

ここまでのフローを保存しておきます。

デスクトップフローの作成
続いてデスクトップフローの設定を行います。練習用サイトを起動し、ログイン処理を行った後、売上入力画面に注文書データを入力するフローを作成します。
1. レコーダーを使ってデスクトップフローを作成する
はじめにフローを新規作成します。

そしてレコーダー機能を活用し、ブラウザーの起動から売上入力を行う操作まで行います。レコーダーのアイコンをクリックし、レコーダー機能を起動します。

レコーダーウィンドウの右上にある、3点リーダー > 新しいWebブラウザーを起動する > Microsoft Edgeから起動するブラウザーの設定をします。空のMicrosoft Edgeが起動後、URL欄に


記録ボタンをクリックしてレコーダーを開始します



ここまで完了したら、一度フローを保存しておきましょう。
2. クラウドフローとやりとりするための変数を設定する
クラウドフローとやり取りする値
入出力変数とは、フローの外部とやり取りする変数です。フロー変数がフローの内部で利用する変数であることに対し、入出力変数はフローの外部
実際に、変数ペインの入出力変数から+アイコンをクリックして入出力変数を追加しましょう。クリック後、入力変数か出力変数を選択できます。入力変数を選択してください。

新しい入力変数のウィンドウが表示されます。設定項目は以下のとおりです。
- 変数名:フローの内部で利用する変数名を設定します
- データの種類:テキスト型や数値型、リスト型、データテーブル型などの変数の型を指定します
- 既定値:初期値を設定します
- 外部名:呼び出し元
(コンソール画面からの実行や、他デスクトップフローからの呼び出し、クラウドフローからの呼び出し) に表示される変数名を定義します - 機密情報としてマーク:入力値を機密情報として設定します
それに対して、
- 「得意先名称」
-
- 変数名:TokuisakiNameInput
- データの種類:テキスト
- 外部名:TokuisakiNameInput
- 「売上日」
-
- 変数名:UriageDateInput
- データの種類:テキスト
- 外部名:UriageDateInput
- 「金額」
-
- 変数名:KingakuInput
- データの種類:数値
- 外部名:KingakuInput



設定後の変数ペインは以下のようになります。

次に、入力変数で受け取る売上日はYYYY-MM-ddの形式となっていますので、年月日それぞれに値を分割し、変数に格納します。フローの先頭
- 分割するテキスト:%UriageDateInput%
- 区切り記号の種類:カスタム
- カスタム区切り記号:- (半角ハイフン)

続いて分割された値をそれぞれ、年・
- 【年】
の値を設定 -
- 値:%TextList[0]%
- 【月】
の値を設定 -
- 値:%TextList[1]%
- 【日】
の値を設定 -
- 値:%TextList[2]%



ここでのアクションは以下のとおりです。

売上入力画面で入力に利用する各アクションの値にも変数を設定します。得意先名の設定は、得意先を設定している
- テキスト:%TokuisakiNameInput%

売上年、売上月、売上日の設定は、それぞれ設定している
- 売上年
-
- テキスト:%Year%
- 売上月
-
- テキスト:%Month%
- 売上日
-
- テキスト:%Day%



金額の設定は、金額を設定している
- テキスト:%KingakuInput%

設定したアクションの内容は以下のとおりです。

3. ブラウザーを閉じるアクションを追加する
起動済みのブラウザーを閉じるアクションを追加しておきます。インスタンスは初期設定で設定済みの%Browser%を設定します。

4. 処理結果を呼び出し元のフローに渡すための出力変数を設定する
処理結果を呼び出し元のフローに渡すための出力変数を設定します。入出力変数から出力変数を新規で作成して、出力変数を以下のとおり設定します。
- 変数名:Gihyo4ResultOutput
- データの種類:テキスト
- 外部名:Gihyo4ResultOutput
- 説明:処理結果


処理の最後に出力変数へ値を格納するための
- 変数:Gihyo4ResultOutput
- 値:正常終了
- ※今回は固定値で設定しています。

5. デスクトップフローでエラー発生時の処理を追加する
デスクトップフローでエラーになった場合に、出力変数に異常終了を通知するための設定を行います。
「フローコントロール」
- 名前:ErrorHandling
- 新しいルール:変数の設定
- 変数:%Gihyo4ResultOutopu%
- 宛先:エラー
- フロー実行を続行する:ブロックの末尾に移動する
- 予期しないロジックエラーを取得:オン



クラウドフローからデスクトップフローを呼び出す処理を追加する
これまでの手順でデスクトップフローの設定が完了しました。続いて、先に設定していたクラウドフローからデスクトップフローを呼び出す処理を設定していきます。
はじめに、請求書から情報を抽出するアクションの次にDesktop flowsコネクタの

アクションに各種設定を行います。以下のとおり設定します。
- Desktop フロー:Gihyo4_
AI Builder―クラウドフロー (前手順で作成したデスクトップフロー) - 実行モード:アテンド型
- TokuisakiNameInput:ベンダー住所の受取人
(請求書から情報を抽出するアクションから取得した値) - UriageDateInput:請求日
(日付) (請求書から情報を抽出するアクションから取得した値) - KingakuInput:請求書の合計
(請求書から情報を抽出するアクションから取得した値)

今回のサンプルの実行結果を確認する
実際にメール受信トリガーに設定したフィルター条件に合致する内容でメールを送信し、フローが最後まで動作するか確認します。
- メール件名のトリガーとなるキーワード:
【Gihyo4】 注文書



今回作成したフローは、とてもシンプルな運用シーンを想定したフローになっています。受信メールに複数の注文書ファイルが添付されているシーンや、AI Builderで想定とおりに値が認識できなかった場合のエラー処理などは未設定です。より広く業務プロセスに対応したフローとして活用していく場合には、様々なシーンを想定したメンテナンスが必要となってくるでしょう。
まとめ
第1回から今回の第4回にかけて、Power Automateの概要と基礎から応用した活用方法について紹介してきました。業務プロセスを自動化する点において、Power Automateは各クラウドサービスの連携
第1回でも紹介しましたが、Power Automate のRPA機能であるPower Automate for desktopはWindows 11に標準搭載されており、無償でまずは気軽に試せるという利点が大きいです。まずは無償で気軽に試し、チームや組織で計画的に運用していく際にはライセンスを付与して管理しながらスケールアップしていくこともPower Automateの魅力の一つです。
また、業務プロセスは日々変わるもので、Power Automateで作成したフローも修正する場面も多々出てきます。しかし、Power Automateの特徴のひとつである、
第1回のコラムでも紹介した