2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automate DesktopでPDF請求書から金額だけを抜く

Last updated at Posted at 2023-09-09

PADを使って請求書PDFから請求金額だけを抜く

PDFの請求書ってどこにでもありますよね。うちの部署では正直溢れんばかりのPDF請求書というのはないのですが、本タイトルにしたような事が出来れば、何かDXしてるなという感じで尚且つ便利ですよね。
これを作って当部署の人に、「すげー!」と言ってもらう為だけに作りました。基本はPDAというノンコードツールを使うので簡単ではあったのですが、仕組みを理解しない動かないので、それも踏まえて説明します。

完成したものがこちら

ezgif.com-optimize.gif

取組んだフロー
1.請求書が入ったフォルダから該当取引先だけを別フォルダに移動
2.別フォルダに入ったPDFファイルを1枚づつ読み込む
3.合計金額が入った"行"を抽出
4.3から今度は"金額"だけを抽出
5.4で抽出した金額を数値型に変換
6.5で変換した数値を空のExcelシートに転記
以上

画面フローはこうなります。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (18)-min.png
郢ァ・ケ郢ァ・ッ郢晢スェ郢晢スシ郢晢スウ郢ァ・キ郢晢スァ郢昴・繝ィ (19)-min.png

Power Automate Desktopの設定

新しいフローを作成
画面左上の「新しいフロー」を選んで、新規に作成を行います。
WS000012.JPG
フロー名に自分の覚えやすい名前を記入して「作成」ボタンを教えてください。
WS000013.JPG
1.フォルダー内のファイルを取得
今回は請求書が全て入っている”ダミー請求書”という名のフォルダをデスクトップ上に
作成しました。そのフォルダから該当取引先の請求書だけを別のフォルダに移すという
作業を実施します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (20)-min.png

ポイント
請求書PDFは全て"会社名+日付+請求書"という名前で入っています。
ファイルフィルターに今回は"A社"と記入しています。そうする事で、請求書PDF
の中から"A社"という名前が入った請求書を指定します。

ポイント2
全てにおいてアクションをした場合に、青印で囲ったように"変数"というものが生成
されます。説明が難しいですが今回の場合で言えば、指定されたフォルダから指定の
ファイルを抜くという一連の作業を今回で言えば、"Files"という名の変数で定義した
ものと考えてください。

2.ファイルの移動
宛先フォルダに移動先のフォルダを指定します。
今回ファイルを移動するという一連のアクションに対して、"MovedFiles"という変数が
定義されました。これ以降も変数は全て青色で囲っていきます。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (21)-min.png

ポイント3
今回で言えば、移動するファイルは変数として定義された"Files"になりますが、
それを記入する場合は、"%Files%"というように%で囲む必要があります。これは
Power Automate Desktopを使う上での共通のルールと思ってください。

3.フォルダー内のファイルを取得
移動先フォルダから、PDFファイルを全て抜きます。今回は全てのPDFを全て取得する
ので"*.pdf"としています。そうする事で全てのPDFファイルを取得します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (22)-min.png

ポイント4
今回は全てのPDFファイルを抜くので、"*.pdf"としましたが、もしフォルダ内に他の
PDFファイルがある場合は、今回で言えば"A社*.pdf"に設定します。
もし不安があるなら、この時点で実際に動かしてみるのも一手です。予定通りに
動かなければ、何度もファイルフィルターを変えて試してみればいいと思います。
そうする事でファイル名の付け方とかも考えるようになります。

4.Excelの起動
Excelを起動させます。このアクションに対して"Excelinstance"という変数が定義
されました。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (23)-min.png
5.For each
ループの中から"For each"アクションを移動させ設定します。この作業はこれから
設定する作業を繰り返し実施するアクションです。"CurrentItem"という変数で定義します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (24)-min.png
6.PDFからテキストを抽出
まずはPDFファイルから全てのテキストを抽出します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (25)-min.png
7.テキストの分割
標準の区切り記号を、"新しい行"に設定します。"TextList"という変数が定義されました。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (26)-min.png
8.テキストの分割
ここが最大のポイントです。
7.の作業で請求書PDFの全ての行がテキスト化されました。今回はそこから合計費用が記載
された11行目だけを抽出します。よって分類するテキストに"%TextList[11]%"と入力します。
"TextList2"という変数が定義されました。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (27)-min.png
9.テキストを置換する
8.の作業で合計費用¥○○という行を抽出したので、今度はその行から金額だけを抽出します。
検索するテキストに"合計費用"と入力し、置換先のテキストに"%''%"と入力します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (28)-min.png
9.テキストを置換する
8.で抽出した金額から今度は、¥を抽出します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (29)-min.png
10.テキストを数値に変換
請求書PDFから全ての行を抽出し、その中から1行だけを抽出し、更にその行から金額だけを
抽出してきました。しかし抽出した金額は数字だけなのですが文字列になっています。
それを数値に変換します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (30)-min.png
11.Excelワークシートから最初の空の列や行を取得
4.の作業で変数として定義化された"%ExcelInstance%"をExcelインスタンスに入力します。
行と列で2つの変数が定義されました。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (31)-min.png
12.Excelワークシートに書き込む
書き込む値のところに10.の作業で定義された変数"%TextAsNumber%"を入力します。
繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ (32)-min.png
以上6~12までの作業をFor eachの間に入れます。最初のフロー画像を確認して下さい。
以上で設定は完了です。お疲れ様でした。

最後に

途中で何度も実際に動かしてみて確認してみて下さい。
途中で躓いたらChatGPTに聞いてみて下さい。24時間いつでも回答してくれます。
(私はそうしました。)
実際、同僚に見てもらった感想を最後に記載して終わります。
アシスタントA: すげー!!!
アシスタントB: 何が起きているのかさっぱりわからない。なぜこんな事が出来る??
同僚C:     すげーけど、うちの部署そんなに困るほど請求書が山のように来ないけどな。
私:      「はい、おっしゃる通り・・・・」
アシスタントの驚きはこちらの期待していた通りでした。

請求書PDFでも紙の請求書を写真で撮って、それをPDF化した場合には読み込みません
でした。逆にそれでも読み取る方法があるなら教えてほしいです。

2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?