PowerAutomateDesktopを使ってPDFをExcelに変換して作業効率アップしよう

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/c15a84c7-8a3c-25cf-c1ef-96fb41fc5c22.png"width="75%">
こんにちは、とある飲食店の運営管理をしている会社員です。


請求書や精算書などセキュリティの関係で外部ツールにて変換しづらいPDFのデータを手入力で確認、入力を行う作業に虚無を感じたことはありませんか？私の左に座っている上司のAさんと右に座っている部下のBさんの左右からそんなオーラを感じて声をかけてみることにしました。

上司のAさんはテナントとして入店しているショッピングセンターからPDFで送られてくる売上データをExcelに手入力しているとのこと。

部下のBさんはPDFで送られてくる請求書のデータをExcelに手入力でリスト化しているとのこと。

私の目線では同じ桁数の数値を入れ続けるとミスも起きやすいですし、何より時間が勿体なく感じます。
PDFをExcelのデータにサッと変換できたら業務改善に繋がる予感がします。
早速[PowerAutomate](https://powerautomate.microsoft.com/ja-jp/robotic-process-automation/ "PowerAutomate")を使用して作成してみました。




# PDFをExcelに変換するPowerAutomateDesktopのフロー
まずは動きを確認

https://twitter.com/j30229/status/1653692842576068609?s=20

続いてフローです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/6e48d4ac-05bb-7766-e476-ca0a0ba6c498.png"width="75%">

サクッとシンプルに作成！
下記はフローのソースコードです。
```
Pdf.ExtractTextFromPDF.ExtractText PDFFile: $'''C:\\Users\\tomow\\Desktop\\PMV2\\PDF保管\\PDF\\お試しPDF.pdf''' DetectLayout: False ExtractedText=> ExtractedPDFText
Text.SplitText.Split Text: ExtractedPDFText StandardDelimiter: Text.StandardDelimiter.NewLine DelimiterTimes: 1 Result=> TextList
Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
SET NewVar TO 1
LOOP FOREACH CurrentItem IN TextList
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem Column: 1 Row: NewVar
    Variables.IncreaseVariable Value: NewVar IncrementValue: 1
END
Excel.SaveExcel.SaveAs Instance: ExcelInstance DocumentFormat: Excel.ExcelFormat.OpenXmlWorkbook DocumentPath: $'''C:\\Users\\tomow\\Desktop\\PMV2\\PDF保管\\EXCEL変換\\PDF.xlsx'''
```

# 使用ツール
-[PowerAutomateDesktop](https://powerautomate.microsoft.com/ja-jp/robotic-process-automation/ "PowerAutomateDesktop")
-Excel
-PDFファイル
# フローの説明

## 1　PDFからテキストを抽出
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/9b24b6cb-7288-7f55-2a73-ed93185d2a02.png"width="75%">
対象のPDFを指定します。

## 2　テキストの分割
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/7dcdebba-ae88-5129-f4a9-3b527766e0fe.png"width="75%">
PDF内のテキストの分割処理をします。
```分割するテキスト```には１で作成した変数```ExtractedPDFText```を指定します。

## 3　変数の設定
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/fa372294-d586-c7b6-b4b2-4f77ef3f743d.png"width="75%">
値が１の変数を設定します。
## 4　For eachで反復処理
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/8075d50f-36e0-bf9e-6b02-37d77c5a25a6.png"width="75%">
```反復処理を行う値```には変数```TextList```を指定します。


## 5　Excelワークシートの書き込み
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/7beb1b27-8f50-735d-4c2d-d6c4a0be8412.png"width="75%">
```Excelインスタンス```には変数```ExcelInstance```を指定します。
```書き込む値```には変数```CurrentItem```を指定します。
```行```には変数```NewVar```を指定します。

## 6　変数を大きくする
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3293453/1aaa9264-bd0e-7975-571c-997542e8233c.png"width="75%">
```変数```には変数```NewVar```を指定します

# 使ってもらった感想

## 使ってもらった人

上司A・・・管理職

部下B・・・事務職

### 説明したこと
今回は、上記の2名に手作業をできるだけ自動化して作業時間を減らしていきたい。その為にPowerAutomateDesktopというツールを使ってPDFをExcelに変換することで手入力の手間を減らせるツールを作りました。使ってみて良い点と課題点、良くない点を聞いてみました。

### 上司A
良い点
- 入力の負担が減っていいと思う。
課題点
- フォルダに入れたPDFの変換がそのままできればもっといい
良くない点
- 数値は入力しないと覚えられないから自分では使わない。

### 部下B
良い点
- ミスがなくなるのはプレッシャー軽減になる。
課題点
- Excelに変換した際の数値が横の日付と一体になっていてそのまま使えない。
- そのまま所定のフォームに貼り付けまでして欲しい。
良くない点
- 工程が長い（マウスをクリックする回数が多い）！いちいちアプリを起動しないといけないのが面倒

## これから
PowerAutomateDesktopなどのツールを使ってどんなことができるか少しでも共有できたことは良かったと思いますが、私の知識＆技術不足もあり満足できるレベルまでは届かなかったようです。
このフィードバックを活かしまずは、変換用のフォルダ指定での作成を行おうと思います。
全体としては少しシンプルさと利便性を追求し業務改善につなげていきたいと思います。

ここまで読んでいただきありがとうございました。