LoginSignup
12
8

More than 1 year has passed since last update.

Power Automate for desktop で簡単にPDFをページ分割する

Last updated at Posted at 2023-03-01

1. はじめに

当記事は、2023/02/16 に開催された、RPACommunity さんの「【自動化やIT活用ネタ】ライトニングトーク大会」にて登壇したときの Demo の説明になります。

RPACommunity ライトニングトーク大会は、立候補制で集まった様々なメンバーが多種多様なITトークや自動化トークを披露するイベントです。ぜひ参加、登壇してみてください。

2. この記事で説明すること

Power Automate for desktop を利用すると、PDFファイルを好みのページ数で分割しファイル化することが可能です。
image.png

その方法として、「新しい PDF ファイルへの PDF ファイルページの抽出」アクションを利用します。
image.png
ドキュメントは以下です。

1ページずつ分割するケースが主だと思います。
この場合、ループ処理を利用することで、動的(可変)な総ページ数のPDFファイルにも対応可能です。
image.png

処理が最終ページまで到達したらループを終わらせる必要があります。つまり、対象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. 実装方法

全体の構成です。
image.png

4-1. Loop

開始値:1
終了:[想定されないページ数](ありえないサイズで指定)
増分:[分割するページ数]

で設定します。
image.png

生成された %LoopIndex% は、この後のPDF分割で利用します。

4-2. 新しい PDF ファイルへの PDF ファイルページの抽出

アクションメニューの[PDF]下にある「新しい PDF ファイルへの PDF ファイルページの抽出」アクションを利用し、PDFを分割します。

PDFファイル: 対処のPDFファイルのフルパス

ページ選択: 上記 4-1. で生成された変数 %LoopIndex%

抽出されたPDFファイルのパス: 分割され出力されるPDFファイルのフルパス

ファイルが存在する場合: 「連番のサフィックスを追加します」 を選択すると、ファイル名に連番が付与されます

image.png

4-3. ラベル

上記Loopの外にラベルを配置します。
ラベル名は任意です。
image.png

4-4. 例外処理の実装

4-2. のアクションウィンドウ左下の「エラー発生時」ボタンを押下します。
image.png

[詳細] - [ページが範囲外です] - [フロー実行を続行する] - [例外処理モード] で、「ラベルに移動」 を選択します。
image.png

[ラベルの選択] に、4-3.で設定したラベルを指定します。
image.png

Power Automate for desktop の各アクションには、例外処理のケースとして、あらかじめ発生する可能性のある例外が列挙されています。
今回利用した、「ページが範囲外です」は、「1つまたは複数のページが PDF ファイルの範囲外であることを示します」。
https://learn.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/pdf#extractpages_onerror

4-5. フロー実行

フローを実行し、PDFファイルが無事分割されることを確認してください。
image.png

image.png
分割できました!

まとめ

PDFファイルを固定のページ数で分割するフローが、わずか 4ステップで完結しました。
例外処理を活用することで処理がスマートに構成可能です。

Power Automate for desktop の例外処理は非常に強力な処理です。
例外という言葉から、エラーハンドリング的なイメージを想像しがちですが、今回のような正常系処理にも組み込むことが可能です。
是非ご活用ください。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8