Power Automate を使い、自動でGメールの添付ファイルを保存し、既存のExcelに貼り付けたい

こんにちは!
私はスーパーマーケットのお総菜部門でチーフとして働いている27歳男性です。

## 1.私の担当業務
私はチーフの仕事の一つとして、__週別の製造計画書__ を作る業務を担当しています。
パートの皆さんはこの計画書を見ながら日々売り場に出す惣菜などを製造しています。
私の会社では木曜日から水曜日を1週間として区切っており、
その中で日曜日に次週の木曜日から水曜日の製造計画を立てています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/24039389-a797-ac20-b45f-d1b598bdaa3e.png"width=75%>

## 2.作業を細かく分解するとみえてきた小さな課題
私は惣菜、弁当、寿司部門の製造計画を担当しています。
3つの部門の計画を作るとなると、おおよそ２時間は要します。
__売上や利益の確保__ につながる大事な仕事ですので、時間はかけるべきですが、
製造計画の作成を手順ごとに分解してみると、__時短したい手順と時間をかけて精度を高めたい手順__ が浮かびあがってきました。
以下は製造計画の作成手順です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/d3273f98-e8fc-1f95-727a-89ea588e0d3e.png"width=75%>

この中で短縮したい作業は
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/96394c17-70d2-7003-8db5-d496c87a727d.png"width=75%>

ここの部分です。ここを短縮し、__製造計画の数量決定に大事な７__ と __いろいろな情報を加味して製造数を決める８__ に時間をかけていきたいと考えていきます。

今回は __２、３の部分__ をPower Automateで自動化に挑戦してみました。



## 4.Power Automateで自動化に挑戦

### 4-1使用するツール
__・Power Automate__
__・Gメール__
__・Excel__

フローの全体図はこちらです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/0c2e15c5-8f1c-96ff-63c9-7e09629fb974.png"width=75%>


フローのソースコードはこちらです。
```
Email.RetrieveEmails.RetrieveAndSaveAttachments IMAPServer: $'''imap.gmail.com''' Port: 993 EnableSSL: True Username: $'''skyikiusi0727@gmail.com''' Password: P'AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAACwsrO5dNqUqAqpkclHYAjQQAAAACAAAAAAAQZgAAAAEAACAAAABrl9ptjdC/3gIpPsDwKDRz2qneQh3WBQ6iCv6uVag6MgAAAAAOgAAAAAIAACAAAAAkCeTOTUk2qfrExDoiegzOYSGid5tfemCWEOoBsdwbEjAAAABaX9pw+cd52fISdpLWe4eJaKwxYx2O/0pDjE/6pZgBFasM9iKUQ7RCBkyEAoZbBspAAAAA0GSfiK4gdSL+PwJEoE3wlH2YNg4vX21Oi+RDstKm9x9HRZyyqdlJ+ygLdzMCsBPKF5QfJJPVotKH1pPUZ84VpQ==' AcceptUntrustedCertificates: False MailFolder: $'''inbox''' MailsToRetrieve: Email.RetrieveMessagesMode.Unread MarkAsRead: False SubjectContains: $'''デリカ第一事業''' SaveAttachmentsInto: $'''C:\\Users\\skyik\\OneDrive\\ドキュメント\\製造計画資料''' RetrievedEmails=> RetrievedEmails
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\skyik\\OneDrive\\ドキュメント\\製造計画資料\\ホット8週計画 xlsx のコピー (1).xls''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.AddWorksheet Instance: ExcelInstance Name: $'''売り込み商品一覧''' WorksheetPosition: Excel.WorksheetPosition.First
ON ERROR

END
Folder.GetFiles Folder: $'''C:\\Users\\skyik\\OneDrive\\ドキュメント\\製造計画資料''' FileFilter: $'''*.xls''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
LOOP FOREACH CurrentItem IN Files
    Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: CurrentItem Visible: True ReadOnly: False Instance=> ExcelInstance2
    Excel.GetAllWorksheets Instance: ExcelInstance2 Worksheets=> SheetNames
    Excel.ReadFromExcel.ReadAllCells Instance: ExcelInstance2 ReadAsText: True FirstLineIsHeader: False RangeValue=> ExcelData
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: ExcelData Column: $'''A''' Row: 1
    Excel.CloseExcel.Close Instance: ExcelInstance2
END 
```
実際に動かしてみた結果はこちらです。
    
https://twitter.com/sato45287047196/status/1651885644883591169?s=20

毎週決まった曜日に、社内のメールで週別の広告掲載商品と売り込み商品が一覧になったエクセルのファイルが送られてくるので、そのファイルを保存して、製造計画のExcelに貼り付けるという作業を自動化していきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/55548155-2ab0-1b00-ce3b-68f107423d8d.png"width=75%>

### 4-2.メールメッセージの取得
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/69e62fe4-e4f3-e0ce-0f01-908711cd84ad.png"width=75%>
　
IMAPサーバーをimap.gmail.comと入力します。
ユーザー名は受信メールがあるメールアドレスを入力し、パスワードを入力します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/8e0f2bed-49c5-8a47-4550-563c89058298.png"width=75%>

ここでは、「デリカ第一事業」が含まれている件名があるメールを抽出したいので、
 このように設定をします。
「添付ファイルを保存します」を選び、保存先を設定します。

### 4-3.Excelの起動
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/e49bc4cc-5afa-fb91-2818-d135a431235e.png"width=75%>

「次のドキュメント」を選択し、添付ファイルを貼り付け先のExcelを選択します。

### 4-4.新しいワークシートの追加
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/7fb52cea-e403-b461-353c-8601fa121c3c.png"width=75%>

添付ファイルの貼り付けを新しいシートにしたいので、このアクションを追加します。
新しいワークシート名は添付ファイルの情報が分かるような名前で設定します。

### 4-5.For each
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/5b1b0558-7d3d-9444-96ca-061654fc8969.png"width=75%>

アクションを繰り返すFor eachを使用します。
反復処理を行う値は先ほど生成した変数「Files」を使用します。

### 4-6.Excelの起動
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/8a6f60b2-1f37-103f-6fbb-c34fda5531af.png"width=75%>

添付ファイルをExcelで開きます。
ドキュメントパスは先ほど生成した変数「CurrentItem」を使用します。

### 4-7.すべてのExcelワークシートの取得
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/54c7c91d-050d-d9df-bcc0-d5b9de49ff16.png"width=75%>

添付ファイルのシート内のすべての情報を取得します。
Excelインスタンスは添付ファイル側のExcelの起動アクション時に生成した
変数「ExcelInstance2」を使用します。

### 4-8.Excelワークシートから読み取る
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/bdddd3a4-6c1a-1b0a-6dd4-bbc53bb0e319.png"width=75%>

併せて、Excelワークシートの読み取りを実行します。

### 4-9.Excelワークシートに書き込む
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/4fb9efad-557e-f5ec-fb43-75fd5e7a01c2.png"width=75%>

添付ファイル貼り付け先のExcelに先ほど読み取ったワークシートを書き出しします。
書き出し先は新しく追加したワークシートです。

最後にExcelを閉じるアクションを実行します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294174/436ffe6c-913f-4ca6-1879-9476ae754c24.png"width=75%>

以上で完成です。

以前は送られてきた広告掲載商品、売り込み商品が一覧になったファイルを印刷して、それを見ながら、製造計画に商品名などを打ち込むというアナログな方法をとっていましたが、
同じExcel内の別シートに商品一覧のデータがあることによって、__そこの商品名をコピーして、製造計画にペーストするだけ__ でよくなりました。

## 5.実際にツールを自分以外の人に見てもらいました

今回は職場で製造計画を作るという業務をしているのが、私のみのため、
他店の製造計画をつくる業務をしている二人のチーフにツールを見てもらいました。

「製造計画のこの手順の部分をこのツールを使用して自動化してみました。」
と説明し、
「実際に使ってみるとしたらどうか、不満点や改善点はあるか。」
を聞き出しました。

### 「この作業は地味に手間なのでありがたい。製造計画の編集がスムーズに行える。」
### 「製造計画に商品名を入力すると、自動で金額も一緒に表示されるともっとありがたい。」
### 「年末年始やお盆など繁忙期は見るべき資料が増える。全部ダウンロードしたり、印刷したりするのは面倒だし、ぐちゃぐちゃになる。一つのエクセル自動でにまとめてくれるとわかりやすいし、時短になりそう。」
という意見、感想をいただきました。

## 6.あとがき
製造計画は考える作業と考えなくていい作業があります。__考えなくていい作業はなるべく早く終わらせて、考える作業に集中したい！__ と考えていますが、他店のチーフも似たような認識を持っていました。また、今回の他店のチーフとのやり取りで、__習慣化して気づかないけど、煩わしい作業がまだまだあるなと気づかされました。__ 今後も考えなくていい作業を明確化して、効率化をし、価値を生む仕事に注力していければと思います。