初の自動化！Power Automateで添付ファイル付きメールを一斉送信！

お疲れさまです。3回目の投稿です。
沖縄で惣菜バイヤーやってます。
デジタルの勉強を始めてはや1カ月程が過ぎました！
**RPA**という言葉は最近よく聞くけど、なんだかよくわからない、、、
（ロボティック・プロセス・オートメーションというらしいですが）
先日**Power Automate**というのを知りました。
これを使えばいろいろパソコン業務を自動化できるらしい！
まさに自分が求めていたもの！といことで今回はこちらをチャレンジしていきたいと思います。

## メール多くて~~めんどくさ~~大変
みなさんは毎日どのくらいメールしますか。自分は1日平均だいたい50件くらいです。
社内・店舗間・取引先などと日々必ず使うものなので、メールに費やす時間は多いと思います。
社内や店舗への一斉送信とかは楽ですが、取引先となると少し変わってきます。
発注書など送る場合、本文はだいたい同じですが取引先ごとに添付ファイルが違うので一斉送信できません。
同じ下書きを宛先・添付ファイルを変えてひたら送るということがあります。
発注書のメール送付は毎月10社程、2回のペースの頻度くらいです。
同じ部署のバイヤーに、[この前周囲の困りごとを聞いたとき](https://note.com/clean_zebra807/n/n53d833a9d7ba)に同じ意見がありました。（※記事リンク貼っていますが、本文では書いていないです。「③新商品の登録が大変」の中で話しだけ出ていました。）
これが少しでも楽になればとメールの自動化に挑戦します。


## 使ったもの
・[Power Automate Desktop](https://powerautomate.microsoft.com/ja-jp/robotic-process-automation/)
・Outlook
・Excel

## できたもの

https://twitter.com/zhi_yu41057/status/1684963036904460288?s=20

ちゃんとメール送れてました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/c0e4da90-f941-8bd9-b1ed-e2687abf4227.png)
※夜中にメール送ってすみません！
事前にメールすることは伝えてはいましたが、次会った時に再度謝ります。。。

:::note
今回作業開始していろいろ調べながら合計6時間くらいかかりました
:::


## 作成したフロー

`フローの流れ`
![6コメント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/3c988601-19c4-8cfb-ebed-3cfb3b55018c.png)

`フローのソースコード`
```ruby:qiita.rb
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\Desktop\\テスト\\Book1.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
Excel.GetFirstFreeRowOnColumn Instance: ExcelInstance Column: $'''E''' FirstFreeRowOnColumn=> FirstFreeRowOnColumn
Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: $'''A''' StartRow: 1 EndColumn: $'''E''' EndRow: FirstFreeRowOnColumn - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
LOOP FOREACH CurrentItem IN ExcelData
    Outlook.Launch Instance=> OutlookInstance
    Outlook.SendEmailThroughOutlook.SendEmail Instance: OutlookInstance Account: $SendTo: CurrentItem['メールアドレス'] Subject: $'''【テスト】RPA自動メール送信''' Body: $'''%CurrentItem['社名']%
%CurrentItem['住所']%
%CurrentItem['担当者']%様
いつもお世話になっております。

自動メールテスト用です

%CurrentItem['電話番号']%''' IsBodyHtml: False Attachments: $'''C:\\Users\\aeon\\Desktop\\前日売上.xlsx'''
END
Excel.CloseExcel.CloseAndSave Instance: ExcelInstance
```

<details><summary>作業手順はこちらをクリック</summary>

まず事前準備としてExcelにメールアドレスや抜き出したい情報を入れます
![7コメント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/e4499f50-5723-7223-ac8c-fbea6266fb3f.png)

### ①Excelの起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/e5b925ec-9e6b-0013-fd85-1c50c46448f1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/7e696c86-ac94-fabd-01c2-cb4c6995f45b.png)

:::note
ドキュメントパスを、ファイルの選択から先程作ったEecelシートに設定します
:::

### ②アクティブなExcelワークシートの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/5df5b3cf-e058-64fc-aa29-34c1fd499e4b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/ce5fae33-720c-e204-597b-87b3d0d1b0a6.png)

:::note
ワークシート名に抜き出すSheetを入れます
:::

### ③Excelワークシートから列における最初の空の行を取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/9c3fc8c2-35c3-e415-e38c-115af2975c67.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/54d5dc43-8ae9-2f45-648b-8b12cd5ebd2c.png)

:::note
E列まで記入しているので、列のとろこに「E」を入れます
:::

### ④Excelワークシートから読み取る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/da9b0ab2-355b-fe39-bb70-eeda8dc75370.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/10e3cb35-06ae-ab6f-f04f-0bf758827001.png)

:::note
最終行を「%FirstFreeRowOnColumn - 1%」にします。
・これでデータが追加されても対応できるように最終行のところでは変数を用いて設定しています。
・-1は空の行の分を表しています。
・詳細の範囲の最初の行に列名が含まれるをオンにします。オンにすることで最初の行の社名や担当者などを省いてくれる役割になっています。
:::

### ⑤～⑧Outlook起動とメッセージの送信
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/1f29d983-16b6-fd04-ecfc-2ae68a4913b1.png)

・`For each`は繰り返し作業を実行してくれます。
「%ExcelData%」を入れて、繰り返しエクセル情報を抜き出し順番にメール送信をしてもらいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/bda7237a-313a-71b7-a8a5-fa1d693b7fc3.png)
・`Outlookを起動します`はそのままでOK
・`Outlookからのメール メッセージの送信`は下記のように設定します。
アカウントは自分のメールアドレスを入れます。
宛先には「%CurrentItem['メールアドレス']%」と記入して、Excelからアドレスを抜き出すようにします。本文も同じ要領で抜き出したい箇所を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/2dcd95e9-57fe-6f1c-c29f-934abad018aa.png)

:::note
最初`For each`の場所が間違っていて、4人に送るはずが1人にしか送信できませんでした。1時間ほど悩み`Outlook起動とメッセージの送信`で挟んだらできました！
:::

### ⑨Excelを閉じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/4f7fcd03-0a16-4949-2864-8df31219b28c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3481572/8fcb8363-aa9a-3ec5-678e-213a658b4c3e.png)

:::note
「ドキュメントを保存」すると上書き保存されます
これで終了です！お疲れさまでした！
:::

>今回参考にしたページ
https://rpahack.com/pad-sendmail#i

</details>

## 同じ部署の人たちに感想聞いてみた
今回4人に自動メールを送ってみました。
（バイヤー3人、パートさん1人）
最近自分がデジタルを勉強中なのはみんな知っています。
今回は**Power Automate**を使って自動化に挑戦ということだけを事前に伝えていました。
メールが来たときはみんな、「あーこれやってたのね」みたいな感じでした。
送ったあとに、「こういう自動メールがあったら普段の業務に実際使えそうですか？」と聞いてみました。


**バイヤーAさん**
:thumbsup:  　自動メール良さそう。自分の業務もだけど、店舗へ前日の売上とかその日の予算とかを自動で抽出して送れたらもっといい。店舗のパソコンって遅いから売上実績とかを見るのにかなり時間がかかるから。朝出勤してこのメールが来たら時間も短縮できるし、毎日数値を確認する癖も付くしいろいろ教育にも繋がりそう。

**バイヤーBさん**
:slight_frown: 　契約書の担当をしているから使えそう。3カ月に1回約30社に契約書送付のメールをするからその時にいいと思う。本文内容は同じだけど、取引先ごとに契約書が違うから一斉送信できないし個別で送るから時間かかって大変。ただ、契約書は重要書類なので、添付ファイル間違ったりしたら危険だと思う。

**バイヤーCさん**
:interrobang:　何やってるかよくわからない。自分のケータイに迷惑メールとかよく来るけど、それも同じような感じなのかな。
（自分の伝える力の無さ。。。もっと頑張ろう）

**パートDさん**
:small_red_triangle:　バイヤーは使えるかもしれないけど、私はそんなにメール使用しないからそこまでかなー。あ、でも最近PDFファイル名の整理お願いされてそういうのも自動でできるんだったらいいかも。


## 今後に向けて
調べていたら**Power Automate**かなりいろいろ使えるみたいです。
メールだけじゃなくて、EecelやPDF・WEBアプリケーションの操作みたいにたくさんあります。
あれもこれもとやりたいことがありすぎて、夢が膨らみます。
朝出勤したら、必ずメールと社内ページが自動で立ち上がる。
そのあと自動で昨日の売上や在庫・荒利実績がメールで送られてくる。それを店舗に自動で一斉送信…
できたらいいなをただ会社のシステムを待っているだけじゃなくて、もしかしたら自分でもつくれるかもしれないということが今回わかりました。
道のりはまだまだ遠いですが、今後も夢に向かって頑張りたいと思います。
ご覧いただきありがとうございました。