バックグラウンドプロセスとは??

前回の記事で、バックグラウンドプロセスの概要をご紹介しました😀

本記事では、フォルダ監視を行うバックグラウンドプロセス🤖の作り方をご紹介したいと思います✨

作るもの

パワーポイント形式のファイルが指定したフォルダに格納されたら、そのファイルのPDFを作成するバックグラウンドプロセス です🚀

動作イメージ

pic1

提案書や企画書、プレゼン資料などPowerPointで作成した後、PDF化して関係者に送付するケースは少なくないですよね🤔 このプロセスがあれば、パワポをぽいっとフォルダに突っ込めばPDF化してくれるので、(少なくとも私は)少しだけ幸せになれます🤖🔥

完成系のワークフロー

pic1

バッググラウンドプロセスのワークフロー実装

では早速作り方を見ていきましょう。

プロジェクト作成

UiPath Studioの標準テンプレート群の一つとして表示されているバックグラウンドプロセスを選択します。

pic1

プロジェクト名は「PowerPoint PDF変換」としました。

pic2

パッケージの追加

PowerPoint関連の操作を自動化するために、「UiPath.Presentations.Activities」をプロジェクトに追加します。

pic3

これで下準備は完了です。ワークフロー実装に入りましょう。

フォルダ監視処理の実装

最初に、[トリガー スコープ]アクティビティを配置します。

pic4

[トリガー スコープ]アクティビティは、ファイル変更やプロセス開始・終了、特定のマウス操作やファンクションキー押下などの特定のイベントをトリガーに、指定されたアクションを実行することができるアクティビティです。
[スケジューリング モード]プロパティを「順次」にしておくことで、イベントを1回処理した後もプロセスが終了せず、トリガーイベントが発生するたびに指定されたアクションを行います。つまり、監視処理を行うことができます。

今回は 特定のフォルダにファイルが格納された時といったイベントをトリガーにしたいため、トリガーに[ファイル変更トリガー]アクティビティを配置します。

pic5

[パス]プロパティには監視対象のフォルダを指定しますが、直接フォルダパスを書き込むのではなく、引数を作成し、指定するようにします。
こうすることで、UiPath Assistantから監視フォルダを設定できるようになります。

pic6

そのほか以下のプロパティを設定します。

プロパティ名 設定
イベント:変更の種類 Created
イベント:通知フィルター FileName
オプション:サブディレクトリを含む True
ファイル:ファイル名フィルター “*.pptx”

以上で、監視フォルダ内(サブフォルダ含む)に、新しくパワーポイント形式のファイルが格納された時というトリガーイベントを実装できました。

続いてPowerPointをPDFに変換する処理を実装しましょう。

PowerPointをPDFに変換する処理の実装

アクション領域に、「PowerPoint プレゼンテーションを使用」アクティビティを配置します。 パワーポイントファイル(パス)プロパティには、「args.FileChangeInfo.FullPath」を指定します。

pic7

ファイル変更トリガーで検出したファイルのフルパスは「args.FileChangeInfo.FullPath」で取得できる

そのほか以下のプロパティを設定します。

プロパティ名 設定
オプション:新しいファイルの作成 False
オプション:自動保存 False
オプション:読み取り専用 True

続いて[実行]シーケンス内部に、[プレゼンテーションを PDF として保存]アクティビティを配置します。

以下のプロパティを設定します。

プロパティ名 設定
入力:プレゼンテーション PowerPoint
ファイル:保存先のPDFのパス args.FileChangeInfo.FullPath.Replace(".pptx”,".pdf”)

pic8

保存先のPDFのパスには、パワポファイルの拡張子をpdfに変えた同名ファイルとするため、args.FileChangeInfo.FullPath.Replace(".pptx”,".pdf”) を指定

これで基本的には完成です!! しかし動作確認をしてみるとわかるのですが、エラーで止まります😥

監視フォルダにPowerPointファイルを格納すると、そのPowerPointファイルを開き、期待通りにPDF出力するのですが、その途中でファイルの先頭に~$が付いた一時ファイルが生成されます。これも拡張子は”.pptx"であるため、トリガーイベントが発生しPDF化しようとするのですが、一時ファイルであるため処理に失敗します。もちろん失敗しなくても、PDF化する対象ではないためPDF化をスキップする必要があります。
ということで、~$一時ファイルのスキップ処理を追加します。

~$一時ファイルのスキップ処理の実装

[PowerPoint プレゼンテーションを使用]アクティビティの手前に、[条件分岐]アクティビティを配置します。
[条件]プロパティには、「not args.FileChangeInfo.Name.Contains(“~$”)」を設定します。
Then領域内に、[PowerPoint プレゼンテーションを使用]アクティビティを移動します。

pic10

not args.FileChangeInfo.Name.Contains(“~$”):「検知したファイルに~$が含まれていない場合、後続の処理を行う」という条件

これで実装は完成です🤖🔥

パブリッシュして、UiPath Assistantで監視フォルダのパスを設定すれば、バックグラウンドプロセスでのフォルダ監視ロボ🤖の完成です。
お疲れ様でした😊✨

pic9

今回は、フォルダ監視してそのままバックグラウンドプロセスでPDF化するケースでしたが、
フォルダ監視してOrchestratorのQueueを登録するキュー登録ロボ🤖や、
バックグラウンドでフォルダ監視して、トリガーイベントが発生したらフォアグラウンドプロセスに移行して画面操作を伴う処理を行うロボ🤖も作成可能です。([フォアグラウンドを使用]アクティビティを使用します。)

A Robot for Every Person の実現には、バックグラウンドプロセスの活用も重要になってくると思っています✨
面白そうだな、と思ったら是非一度触ってみて下さい🚀🔥