1. はじめに
当記事は、2023/02/16 に開催された、RPACommunity さんの「【自動化やIT活用ネタ】ライトニングトーク大会」にて登壇したときの Demo の説明になります。
RPACommunity ライトニングトーク大会は、立候補制で集まった様々なメンバーが多種多様なITトークや自動化トークを披露するイベントです。ぜひ参加、登壇してみてください。
2. この記事で説明すること
Power Automate for desktop を利用すると、PDFファイルを好みのページ数で分割しファイル化することが可能です。
その方法として、「新しい PDF ファイルへの PDF ファイルページの抽出」
アクションを利用します。
ドキュメントは以下です。
1ページずつ分割するケースが主だと思います。
この場合、ループ処理を利用することで、動的(可変)な総ページ数のPDFファイルにも対応可能です。
処理が最終ページまで到達したらループを終わらせる必要があります。つまり、対象PDFの総ページ数が必要となります。
しかし、現状、Power Automate for desktop には、PDFの総ページ数を取得する手段は存在しません。
そこで、
「例外処理」を利用し、PDFファイルの分割を数ステップで実現します。
3. Power Automate for desktop の例外処理について
Microsoft のドキュメントは存在しないようです。
training ページは存在します。
https://learn.microsoft.com/ja-jp/training/modules/pad-exception-handling/
また、RPACommunity さんで登壇した時のスライドに、例外処理の仕様を纏めました。
4. 実装方法
4-1. Loop
開始値:1
終了:[想定されないページ数](ありえないサイズで指定)
増分:[分割するページ数]
生成された %LoopIndex%
は、この後のPDF分割で利用します。
4-2. 新しい PDF ファイルへの PDF ファイルページの抽出
アクションメニューの[PDF]下にある「新しい PDF ファイルへの PDF ファイルページの抽出」アクションを利用し、PDFを分割します。
PDFファイル: 対処のPDFファイルのフルパス
ページ選択: 上記 4-1. で生成された変数 %LoopIndex%
抽出されたPDFファイルのパス: 分割され出力されるPDFファイルのフルパス
ファイルが存在する場合: 「連番のサフィックスを追加します」 を選択すると、ファイル名に連番が付与されます
4-3. ラベル
上記Loopの外にラベルを配置します。
ラベル名は任意です。
4-4. 例外処理の実装
4-2. のアクションウィンドウ左下の「エラー発生時」ボタンを押下します。
[詳細] - [ページが範囲外です] - [フロー実行を続行する] - [例外処理モード] で、「ラベルに移動」
を選択します。
[ラベルの選択] に、4-3.で設定したラベルを指定します。
Power Automate for desktop の各アクションには、例外処理のケースとして、あらかじめ発生する可能性のある例外が列挙されています。
今回利用した、「ページが範囲外です」は、「1つまたは複数のページが PDF ファイルの範囲外であることを示します」。
https://learn.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/pdf#extractpages_onerror
4-5. フロー実行
フローを実行し、PDFファイルが無事分割されることを確認してください。
↓
分割できました!
まとめ
PDFファイルを固定のページ数で分割するフローが、わずか 4ステップで完結しました。
例外処理を活用することで処理がスマートに構成可能です。
Power Automate for desktop の例外処理は非常に強力な処理です。
例外という言葉から、エラーハンドリング的なイメージを想像しがちですが、今回のような正常系処理にも組み込むことが可能です。
是非ご活用ください。