Power Automate Desktopを使用して、今実施している作業が効率化できるか試してみた

こんにちは。t0mohiです。3回目の投稿です。
食品スーパーで衛生管理のお仕事をしております。
前回はChatGPTを使用して、業務の効率化を行いました。
こちらの記事です。
[Qiita]

https://qiita.com/t0mohi/items/0b1f860604756e9c746d

今回は、つい先日勉強したPower Automate Desktopを活用して、業務の効率化をはかってみたいと思います。
なんとこのPower Automate Desktop! データを自動化してくれるとのこと。
せっかく勉強したこの機会に、今まで実施していた作業が自動化できないか考えてみました。
# Action1
**PDFデータをExcelにしてみた**

:::note info
**動機**
①PDFデータは便利ですが、加工できないから使えないなぁと思ったことはありませんか?
②PDFの中のデータを抽出できたら、便利なのになぁ。
③Power Automate Desktopで、PDFデータをExcelデータに変換できることがわかった。
:::
# Power Automate Desktopで作成した動画

https://x.com/gcwPvSAIqr10457/status/1833349734137753961

:::note alert
PDFから抽出したExcelファイルですが、マル秘の書類のため、動画では撮影していません。
:::
PDFから抽出したExcelシート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/f3b574b8-4ead-6a6d-c26e-bb421a1fff6b.png)

Power Automate Desktopの工程
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/751cc35f-46d9-a649-4ac9-abdce5bd78e9.png)

フローのソースコード
```
FUNCTION Main_copy GLOBAL
    Pdf.ExtractTextFromPDF.ExtractText PDFFile: $'''C:\\Users\\980376\\Desktop\\◆検便の手引書（2019.3.29改定・再.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
END FUNCTION

```
# 使った感想を上司のAマネージャーに聞いてみた

:::note info
Aマネージャー!
効率を上げるため、業務の自動化を考えています。率直なご意見をお願いします。
と聞いてみました。
:::

:::note warn
**上司Aマネージャー感想**
・こんなの使えないのじゃない?
・文字だけ抽出してもなぁ。
・もっと普段の業務に使えるものがいいよなぁ。
:::

という厳しいご意見をいただきましたので、もっと普段困っている実用的なものを考えてみました。
# Action2
**各お店に配属されている衛生担当メンバーに一斉メールを送りたい**

:::note info
**動機**
衛生担当者は、総勢で100人くらい各お店に配属されています。
衛生担当者は、メーリングリストがないため、Outlookでメールを送る際、以前送信したメールを転送するか、1人ずつアドレスを入力するかをしておりました。
また、新規入社者、退職者も発生しますので、メールを送り忘れてしまう方が発生してしまうことがあるのです。
Power Automate Desktopを使用すれば、名簿リストから簡単にメールが送信できることがわかり、実際に試してみました。
:::
# Power Automate Desktopで作成した動画
https://x.com/gcwPvSAIqr10457/status/1833040627510173974


![手指消毒画像.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/0027b522-aa94-86a1-7cae-11ea5352e438.png)


:::note info
**実施結果**
100名近くの担当者に、一斉メールを送信することができました。
:::

# 使用したツール
・**Excel**
・**Power Automate Desktop**
・**Outlook**
# 手順
1.衛生担当者の名簿を用意

2.Power Automate Desktopの工程
![画像3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/dcd8d39f-89a7-34ea-ec96-4dc009cae831.png)

3.Outlookを起動します
![画像４.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/3b4981be-70cd-820d-6eea-cecb8f8fe8f5.png)

4.Excelの起動
![画像5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/c448e74e-f600-fc1c-83ff-a096c3f2af45.png)

5.Excelワークシートから読み取る
![画像6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/93c6c9e3-a14d-b7ed-6816-599dd442082a.png)

6.Excelを閉じる
![画像7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/51fb906b-77f7-7654-3576-e9a01621b7d6.png)

7.For each
![画像8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/fb1cc4e2-ef01-9592-4f4c-b006a8e9d876.png)

8.Outlookからのメール メッセージの送信
![Outlookでメールを送る送信画像.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840320/3e50e7ea-0c19-2f75-7915-da4a8e1de2aa.png)

End終了

9.フローのソースコード
```
FUNCTION Main_copy GLOBAL
    Outlook.Launch Instance=> OutlookInstance
    Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\980376\\Desktop\\2024QKダミー名簿.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
    Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: 7 EndRow: 98 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
    Excel.CloseExcel.Close Instance: ExcelInstance
    LOOP FOREACH CurrentItem IN ExcelData
        Outlook.SendEmailThroughOutlook.SendEmail Instance: OutlookInstance Account: $'''amari-t@aeonpeople.biz''' SendTo: CurrentItem['社員番号'] Subject: $'''手指消毒・清掃除菌剤について''' Body: $'''関係各位
お疲れさまです。

テストメール送ります
''' 
IsBodyHtml: False IsDraft: False
    END
END FUNCTION
```
# 使った感想を聞いてみた

:::note info
**上司Aマネージャーに率直な意見を聞いてみた**
今まで衛生担当者は、メーリングリストが無かったため、Outlookでメールを送る際、1人1人入力、もしくは転送メールをコピーしていたが、これで100名近くの衛生担当者に一斉メールの送信ができることになり、現状より作業効率の改善ができると思います。使いやすさと改善点があれば、率直なご意見を伺いたい旨をお伝えしました。
:::
:::note warn
**上司Aマネージャー感想**
・1人1人個別にメールが送られていたら、送られた相手は、他の人にも同様のメールが送られているのがわからないのではないか?
:::
:::note info
**上司Aマネージャー感想**
・名簿リストから連絡先（社員番号）を引っ張ってきているから、従業員の入れ替えにも即時対応できる点は便利である。
:::
# フィードバックに対して感じたこと、学んだこと
Power Automate Desktopを使用して、今実施している作業が効率化できるか試してみました。
上司のAマネージャーから率直な意見を聞いて、改善する余地はまだまだあると感じました。
1人1通のメールではなく、自動でメーリングリストを作るとか、メール以外の連絡方法やアプリ等、違う視点で改善をしていきたいと思います。

Power Automate Desktopは、自部署にとっては新しいツールであり、馴染むのは時間がかかると思いますが、使って良かったと思っていただけるように、今後、グループメンバーの意見を取り入れながら、何回もできるまで、チャレンジしていきたいと思います。