はじめに
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