PowerAutomateの基本的な使い方を勉強する機会があったので職場でも結構な作業量がある店舗からの報告→集約を自動化できないか実験してみました。日頃より約90店舗より報告をメールで受けて1つの報告書にする作業を私の仕事場ではやっています。メールを確認し添付ファイルを開きコピー&ペーストで1店舗づつ作業を実施しています。1つの報告案件で内容によって時間にばらつきはありますが3時間~6時間程度かかる作業がPowerAutomateを利用して1日ワンクリックで終わるようになりました!
結果1つの報告案件の集約作業がトータル1時間かからず完了!作成した内容をご紹介します。
同僚Sさんの悩みと今までの作業の流れ
同僚Sさんは同じグループで働いており、新しい店舗がオープンする時に近隣の店舗から応援を依頼して集計するという作業をしている方です。普段は温厚な方ですが、この仕事がはいると眉間にシワが・・・( ;∀;)
同僚Sさん「めっちゃ大変なんですけど、何とかならないですか??」
私「メールを自動で処理できる仕組みがあるみたいなので何とかやってみますよ」
今までの作業の流れはこのようになっており、集約する内容にもよりますが
3時間~6時間程度の時間を作業に費やしています。
PowerAutomateを利用して作業を自動化してみました
PowerAutomateを利用して次のようなフローで自動化をしてみました!
①Outlookを起動します
②Outlookからメッセージを取得
報告の際に共通のメールタイトルを付けるよう事前に店舗に連絡します。
メールタイトルをトリガーにして対象のメールを選択します。
③Outlookでメールメッセージを処理
あらかじめ指定しておいたパソコン上のフォルダに添付ファイルを格納します。
④Excelの起動
あらかじめ集約用のExcel(マクロで同フォルダのエクセルファイルを合体させる)ファイルを1つ用意しておき、起動させます。
⑤Excelのマクロの実行
マクロを実行させ、同フォルダにある全てのファイルを処理します。
⑥終了
動作の様子
メールのタイトルは今回は「応援依頼書」で統一しています。
PowerAutomate実行後、エクセルファイルを確認すると自動的に応援結果が集約されていました!
早速、同僚Sさんに使ってもらうことに!
同僚Sさんに利用してもらいました
同僚Sさん「おおおぉ。これってメール何通あっても処理してくれるんですか?」
私「メールタイトルに共通のキーワードがあれば、何通でも一斉に処理してくれます」
同僚Sさん「ついでに、どの店舗が提出したかわかるように自動的にならないですか?」
私「エクセル側のマクロでいれておいたら簡単にできますよ」
同僚Sさん「処理したメール、自動的にどこかのフォルダに移動させれます?大量のメールみていると気分が落ち込む」
私「それもPowerAutomateで処理できそうですね!」
実際に使ってもらって、作業時間はおおよそ80%カットできたとのこと。
1日1回、PowerAutomateを実行するだけ!
実際のコード
実際のコードはこのようになっています。
Outlook.RetrieveEmailMessages.RetrieveEmailsAndSaveAttachments Instance: OutlookInstance Account: $'''メールボックス@●●''' MailFolder: $'''受信トレイ''' EmailsToRetrieve: Outlook.RetrieveMessagesMode.All MarkAsRead: True ReadBodyAsHtml: False SubjectContains: $'''応援依頼書''' SaveAttachmentsInto: $'''C:\\Users\\283728\\Desktop\\新しいフォルダー (7)''' Messages=> RetrievedEmails
Outlook.ProcessEmailMessages.MoveEmails Instance: OutlookInstance Account: $'''メールボックス@●●''' EmailsToProcess: RetrievedEmails MailFolder: $'''アーカイブ'''
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\●●●●●\\Desktop\\新しいフォルダー (7)\\応援依頼書集計.xlsm''' Visible: True ReadOnly: False UseMachineLocale: False Instance=> ExcelInstance
Excel.RunMacro Instance: ExcelInstance Macro: $'''読み取り'''
Excel.SaveExcel.Save Instance: ExcelInstance
最後に・・・
実際に使ってもらってフィードバックをもらい次の改善や機能追加をしていきたいと思います。Sさん以外の同僚(私含む)もメールの処理は大変な量があるので、より使いやすくして改善をしていけたらなぁと思います。
PowerAutomateは直観的に処理を配置していくだけ、さらに日本語表記で非常に使いやすいです!