PDFフォームへのデータ入力を自動化するPower Automate for desktopフロー
今回の記事は「RPA(ロボティック・プロセス・オートメーション) Advent Calendar 2023」の20日目の記事となります。
私の自己紹介はこちら↓
先日、PDFtkを使ってPDFフォームに外部からデータ入力する方法について記事を書きました。
今回は、Power Automate for desktopでExcelのリストファイルから読み込んだ値を上記記事の方法でPDFフォームに書き込むフローを紹介します。
対象PDF
対象となるPDFは下図の通りで、「日付」「宛先」「金額」「但し書き」フィールドが設定されたフォームを持つ受領書PDFファイルです。
上記PDFに対し、Power Automate for desktopからPDFtkを使ってデータ入力していきます。
読み込むリストファイル
読み込むリストは下図のExcelで、「受領書発行リスト」シートから「日付」、「宛先」、「金額」、「但し書き」の値を読み込みます。
フロー全体
さっそくフローの紹介です。
ざっくり解説すると、データテーブルとして読み込んだExcelリストの値を元にXML関連のアクションでXFDF(先日の記事ご参照)を作成し、PDFtkでフォームへのデータ入力を行うフローになっています。
Excelリストからの読み込み
Excelリストからフォームに書き込む値を読み込む処理が下図の部分です。
データテーブルとして読み込んだ後はファイルを閉じています。
XFDF(XML)の読み込み
元となるXFDF(XML)を読み込む処理が下図の部分です。
現時点のPADでは、XMLドキュメントを読み込むのが「ファイルから XML を読み取る」アクションしか用意されていないため、「一時ファイルの取得」アクションで作成した一時ファイルに下記XMLを書き込むことで、XMLドキュメントとして読み込めるようにしています。
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
<field name="日付">
<value>(日付)</value>
</field>
<field name="宛先">
<value>(宛先)</value>
</field>
<field name="金額">
<value>(金額)</value>
</field>
<field name="但し書き">
<value>(但し書き)</value>
</field>
</fields>
</xfdf>
フォームに値を書き込んだPDFの作成
Excelリストから読み込んだ値をフォームに書き込み、PDFtkで別名のPDFとして出力する処理が下図の部分です。
XMLドキュメントの編集は「XML 要素の値を設定」等のXML関連のアクションで行えます。注意点として、今回のXMLでは名前空間が指定されているので、XPath クエリではlocal-name()関数とnamespace-uri()関数を使って値を指定しています。
//*[local-name()='field' and namespace-uri()='http://ns.adobe.com/xfdf/' and @name='日付']/*[local-name()='value']
今回のフローでは、「宛先」の値を出力先のPDFファイル名として使用していますが、ファイル名として使用できない文字が含まれている可能性があるため、「テキストを置換する」アクションでファイル名として使用できない文字を削除しています。
「アプリケーションの実行」アクションでPDFtkを実行します。
コマンドラインオプションについては先日書いた記事をご参照ください。
一時ファイルの削除
最後はXMLドキュメントを読み込む際に使用した一時ファイルを削除して処理完了です。
フローの実行画面
実際にフローを動かした際の様子が下図になります。
フローのコード
フローのコードは下記になります。
フローの作成、動作確認はPower Automate for desktop バージョン 2.39 で行っています。それ以外のバージョンでコードを貼り付けても動作しない可能性がある点にはご注意ください。
おわりに
以上のように、Power Automate for desktopでPDFtkを使ってPDFフォームへのデータ入力を自動化してみました。
PDFフォームへのデータ入力の自動化は割と厄介で、RPAツールで行う場合はマウスやキーボード操作を使用することが多いと思いますが、外部ツールを活用することで簡単に処理できますので、PDFフォームへの入力にお困りの方は一度試してみてはいかがでしょうか。
この記事が気に入ったらサポートをしてみませんか?