HAKADORI RPA実践

SynchRoid PDFのページ数により格納場所を振り分ける

2023.01.26 木

こんにちは!
事務職出身RPAエンジニアのMです。

前回、SynchRoidの「コマンドライン実行」ステップを使い、PDFファイルの総ページ数を取得する方法をご紹介しました。今回はその続編として、取得した総ページ数が偶数か奇数かで格納場所を振り分けるロボットを作っていこうと思います。
「値判定」ステップを使用して偶数か奇数かを判定する方法や、ファイルの格納場所の移動方法を解説していきます。

では、前回作ったロボットファイルを開いたところからスタートです。

前回:「SynchRoidコマンドラインでPDFのページ数を取得する」

※この記事のロボット作成で使用しているSynchRoidのバージョンは ライトパック 10.7.0.4 です。
※SynchRoidのベースとなっているRPAツールBizRobo!でも同様の開発が可能です。

前回のロボットファイル を準備する

まず、前回作成したPDFファイルの総ページ数を取得するロボットのロボットファイルを開きます。

前回ロボットのフロー

変数を準備する

前回使用した4つの変数に『Page』と『移動フォルダパス』を追加します。

変数名 変数のタイプ デフォルト値
フォルダパス Short Text ページ数を取得したいPDFファイルが格納されているフォルダのパスを記入
PDFファイル名 Short Text (空白)
PowerShellファイル名 Short Text PowerShellファイルの出力先を「.ps1」の拡張子を含めたフルパスで記入※
ページ数 Short Text (空白)
Page Integer (空白)
移動フォルダパス Short Text ページ数が偶数ファイルの移動先フォルダのパスを記入

『ページ数』を偶数かどうか判定するため、今回は変数のタイプを「Integer(数値)」に変換して計算します。
「Integer」タイプの変数として『Page』を新たに追加します。
『移動フォルダパス』にはファイルの移動先のフォルダパスをデフォルト値として入力してください。

変数の追加

『ページ数』を『Page』に変換する

「Short Text」タイプの変数『ページ数』を「Integer」タイプの変数『Page』に変換します。
前回設定した『ページ数』取得のための「変数の割当」ステップの設定を開きます。

ページ数をPageに変換

ページ数変換設定

前回の状態で変数『ページ数』となっていたところを変数『Page』に変更します。
これで「コマンドライン実行」で取得した総ページ数は「Integer」タイプの変数『Page』に割り当てられます。

値判定ステップを設定する

コマンドライン実行で取得した総ページ数が偶数か奇数かによって処理を変えるため、「値判定」ステップを使用し条件を設定します。

1.値判定ステップを追加

まず、「値判定」ステップを追加します。

値判定ステップの追加

2.アクションタブの設定

「変数の割当」ステップで取得したページ数が偶数の場合のみ次のステップに進めるよう条件を設定していきます。

値判定ステップ設定

条件は「エクスプレッション」のまま、変数『Page』を入力します。

値判定ステップ設定

次に「オペレーター」から「モジュール:%」を選択、入力します。
続けて「2」、「オペレーター」から「等しい:==」、「0」と入力します。
条件の入力をすべて終えると「Page % 2 == 0」とエクスプレッションに入力されている状態になります。

値判定ステップ設定

「モジュール:%」を使用すると割り算 の余りの数を算出することができます。
偶数は「2」で割り算 をした際に余りの数が「0」になるため、「Page % 2 == 0」という式により「総ページ数が偶数の場合」という条件を作っています。
条件の下、Ifは「条件が満たされていません」をDoは「[エラー処理]時に指定されたとおり」を選択します。
これで「総ページ数が奇数の場合」にエラー処理の設定に沿った処理を行うという条件が設定できました。

※今回は「ページ数(ShortText)」を「Page(Integer)」に変換して計算を行いましたが、「%」を使用する割り算ではShortText型の変数でも計算は可能です。
Integer型に変換しないとエクスプレッションで計算が行えない場面もあるため、今回は変数の型を変換する手順も含めております。

3.エラー処理タブの設定

次に、総ページ数が奇数の場合にどのような処理を行うかを設定していきます。

値判定ステップエラー処理設定1

値判定ステップエラー処理設定2

総ページ数が偶数の場合のみ次のステップに進むように設定するため、Thenは「次のイテレーション」を選択します。
次のステップは前回設定した「ファイル繰り返し」ステップ(ここでは「For Each File」)を指定します。
(今回のフローでは「直近の繰り返しステップ」のままにしておいても問題ありません)
これで総ページ数が奇数の場合は次のステップに進まず、「ファイル繰り返し」ステップに戻り次のファイルの処理に進みます。
エラー(=総ページ数が奇数の場合)の時にAPI例外やエラーとしてログ記録を行う必要はないため、どちらもチェックを外しておきます。

4.ステップ名の設定

最後に値判定の内容がロボットビューでも分かりやすいようステップ名を修正します。

値判定ステップ名称変更

これで「値判定」ステップの設定が完了しました。

ファイルを移動する手順

ここからはファイルを別のフォルダに移動する手順の解説になります。
PDFファイルの総ページ数が偶数のとき、変数『フォルダパス』で指定したフォルダから変数『移動フォルダパス』で指定したフォルダにファイルを移動します。
SynchRoid にはファイル移動を目的にしたステップはないため、ファイルを移動先フォルダにコピーし元のファイルを削除するという工程を作成します 。

1.ファイルコピーステップの設定

まず「ファイルコピー」ステップを追加します。

ファイルコピーステップの追加

ファイルコピーステップソースファイル

ソースファイル、ターゲットファイルどちらもエクスプレッションを使用します。
変数『フォルダパス』『PDFファイル』を使い、ソースファイルに「フォルダパス + >>\<< + PDFファイル名」と記入し、元のPDFファイルを指定します。

ファイルコピーステップターゲットファイル

ファイルコピーステップ設定

同様にターゲットファイルには「移動フォルダパス + >>\<< + PDFファイル名」と記入し、コピー先のPDFファイルのファイルパスを記入します。
これで『移動フォルダパス』で指定したフォルダにPDFファイルがコピーされます。

2.ファイル削除ステップの設定

元のフォルダ内のファイルを削除するため、「ファイル削除」ステップを追加します。

ファイル削除ステップの追加

ファイル削除ステップ設定

ファイルまたはディレクトリはエクスプレッションを選択し、ファイルコピーステップのソースファイルと同様に「フォルダパス + >>\<< + PDFファイル名」と入力します。
この「ファイル削除」ステップの設定で元のファイルは削除され、先ほどコピーした移動先にファイルが移動した状態になります。

これで、全ての設定が完了しました。

コマンドライン実行によりPDFファイルのページ数を取得、そしてそのページ数が偶数の場合は指定したフォルダにファイルを移動するロボットの完成です。

まとめ

今回は「値判定」ステップで偶数の条件を設定する方法と、ファイルの移動手順について解説しました。
「値判定」をうまく使いこなせるようになると、ロボットの開発が格段に楽になります!
使用する場面は少ないかもしれませんが「モジュール:%」の使い方も覚えておくと便利です。

これからもちょっとしたテクニックなど、SynchRoid開発のお役に立てるような情報を発信していく予定です。
具体的な開発アドバイスが欲しい方はぜひ、タクトシステムのRPA導入支援サービス「RoboSupo(ロボサポ)」をご検討ください。
伴走型サポートをコンセプトにした「RoboSupo」では皆さまのロボット開発を手厚くサポートします。
ぜひタクトシステムまでお気軽にご相談ください。

前回:「SynchRoidコマンドラインでPDFのページ数を取得する」

-HAKADORI, RPA実践
-,