【運用事例】Power Automate for desktopの呼び出し(自動実行)

はじめに

AI JIMY Paperbot には簡易なRPA機能を用意していますが、複雑な作業には向きません。
今回は、現時点で無償のRPAツールである、Power Automate for desktop (以下PADと略)と組み合わせて利用する際に、自動実行する方法をご紹介します。

PADは、マイクロソフト社が提供しているツールで、現時点で、有償版と無償版があります。
無償版は、機能制限があるとは言え、ひととおりのRPA的な機能~RDA(Robotic Desktop Automation)と呼んだ方が適切~を備えています。

無料版の制限事項として、外部リンクからフローを指定して実行することや、スケジュール実行、トリガ実行を利用できないようです。
そのため、AI JIMY Paperbot のRPA機能から呼び出すことができません。
代わりに、PADで無限ループを実装し、AI JIMY Paperbot の「データ出力」機能でファイルを出力し、ファイルが存在すれば以降の処理を行う方法で、無償版のPADと組み合わせることが出来ます。
下記の無限ループを手元のパソコンで実行したところ、CPUの消費量は2.4%前後でしたので、それほどの負荷にはならないと思います。

サンプルフロー

サンプルの解説

  • 1行目「Loop」
    開始値:0、終了:1、増分:0 を指定します。増分が0なので、永久に終了しません。
  • 2行目「ファイルを待機します」
    ファイルの次の状態を待機します:作成済み、ファイルパス:AI JIMYがファイルを出力する先を指定します。例えば、「D:\PAD\in\受注.csv」などと記述します。この時、AI JIMYのCSV出力先には、変数を利用しないでください。
  • 3行目「ファイルの移動」
    上記で見つけたファイルを移動します。処理中にAI JIMYが新しいファイルを出力した時、上書きされることを避けるためです。例えば、次の様に記述します。
    移動するファイル:「D:\PAD\in\受注.csv」、宛先フォルダー:「D:\PAD\out」(これらのフォルダは事前に用意してください)
  • 4行目「ファイルを待機します」
    移動先のファイルの書き込みを待ちます。例えば、次の様に記述します。
    ファイルの次の状態を待機します:作成済み、ファイルパス:「D:\PAD\out\受注.csv」
  • 5行目「CSVファイルから読み取る」
    AI JIMYが出力したCSVファイルを読み取ります。 ファイルパス:「D:\PAD\out\受注.csv」などと記述します。
    エンコードは、AI JIMYの出力設定に合わせます。通常は「UTF-8」です。
    生成された変数は、「CSVTable」になっているはずです。
    ▼詳細 を開き、最初の行に列名が含まれています:をONにしてください。
  • 6行目「For each」反復処理を行う値は、手前の行で生成された変数 %CSVTable% です。保存先は、CurrentItemになっているはずです。
  • 7行目「メッセージを表示」
    動作確認のため、以下画像の設定にしています。 実務では、ここで取得した値を、業務システムに転記するなど行ってください。
  • 8行目「End」
    For eachの繰り返しの終わりを示します。
  • 9行目「ファイルの名前を変更する」
    処理の終わったCSVファイルの名称を変更しています。削除しても構いませんが、作業履歴として残しておいた方が、不具合発生時に動作確認を行いやすいでしょう。
    以下の例では、ファイル名に時分秒を追加しています。
  • 10行目「End」
    CSVファイルの読み取り処理が終えると、先頭に戻り、次のファイルの書き込みを監視します。

補足

  • バージョン2.30.00208.23075にてフローを作成しています。
  • フローの構成を説明するため、エラー発生時の処理は煩雑さを避け記載していません。
  • 上記で説明したフローを、以下に記載します。ご利用ください。
LOOP LoopIndex FROM 0 TO 1 STEP 0
WAIT (File.WaitForFile.Created File: $'''D:\PAD\in\受注.csv''')
File.Move Files: $'''D:\PAD\in\受注.csv''' Destination: $'''D:\PAD\out''' IfFileExists: File.IfExists.Overwrite MovedFiles=> MovedFiles
WAIT (File.WaitForFile.Created File: $'''D:\PAD\out\受注.csv''')
File.ReadFromCSVFile.ReadCSV CSVFile: $'''D:\PAD\out\受注.csv''' Encoding: File.CSVEncoding.UTF8 TrimFields: True FirstLineContainsColumnNames: True ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault CSVTable=> CSVTable
LOOP FOREACH CurrentItem IN CSVTable
Display.ShowMessageDialog.ShowMessageWithTimeout Title: $'''読み取り結果''' Message: CurrentItem Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False Timeout: 3 ButtonPressed=> ButtonPressed
END
File.RenameFiles.RenameAddDateOrTime Files: $'''D:\PAD\out\受注.csv''' DateTimeToAdd: File.DateTimeToAdd.Current DateTimePosition: File.AddTextPosition.AfterName DateTimeSeparator: File.Separator.Dash DateTimeFormat: $'''HHmmss''' IfFileExists: File.IfExists.DoNothing RenamedFiles=> RenamedFiles
END

関連する記事