皆様こんにちは。ネットワーク事業部の生方です。
今回は、RPAの一つである「Microsoft Power Automate」の実用化に向けてトライしてみました。
日々の業務をこなす中で、様々なものを自動化できたらどんなに楽になるか…
まずはその第一歩になればと思い、試してみたことをお伝えしたいと思います。
目次
RPAとは
RPA(Robotic Process Automation)とは、PC上で行われる作業を、自動で実施してくれるソフトウェアのことです。
自動化できる作業の例を挙げると、
- Officeソフトでのデータ入力・編集作業
- Webブラウザー上に表示されるボタンのクリックや、指定したボックスへの入力などの操作
- メールで受信した添付ファイルを保存する、メール本文の内容を取得する
などといったように、PC操作の多くを自動化することが可能になっています。
Microsoft Power Automate
RPAには様々な種類がありますが、今回はWindows10および11で無料で利用できる「Microsoft Power Automate」を使用してみました。
有料のRPAも数多くありますが、Microsoftアカウントさえあれば無料で始められるのがPower Automateの大きな特徴です。
また、Microsoftが提供するRPAということもあり、Windowsのソフトと連携するためのアクションが標準で用意されていますので、プログラムしやすいという点も魅力だと思います。
ただし、Power Automateには無料版と有料版があり、無料版ではフロー(プログラムの流れ)を別のアカウントと共有することができない、一部使用できないアクションがあるなどの制約があります。
ですが、無料版でも様々なアクションを実行できるようになっておりますので、今回は無料版を利用してフローを作成しています。
今回の記事では、実際に作成したフローを中心にご説明しますので、Power Automateのインストールや細かい設定などは省かせていただきます。
機会があれば導入方法についてもご説明したいと思いますが、予めご了承ください。
RPAで自動化しよう(問い合わせメールの内容をExcelに自動保存する)
今回はタイトルの通り、受信した問い合わせメールの内容を自動保存するためのフローを作成しました。
例えば、ホームページにある専用フォームから会社に対しての問い合わせが入ったとします。
一般的には、問い合わせフォームに入力した内容をメール本文に含めて指定したアドレスに通知することになりますが、他のメールに紛れてしまい見逃してしまう恐れもあります。
また、問い合わせについての統計を取ったり分析をする場合を考えても、問い合わせの内容や受信日時などをExcelでデータベース化しておく方が便利だと思います。
そのようなことを踏まえて、以下のような動作を自動で行うフローを作成してみました。
- Outlookで受信した問い合わせメールから、氏名・問い合わせ内容などを自動で抽出する
- 抽出したデータを、Excelのシートに自動で転記する
簡単ではありますが、これが実用化できれば、メールチェックして文字列を選択してコピー&ペーストという案外面倒な作業から開放されるのでは?
それでは実際に作成したフローをご紹介したいと思います。
Mainフロー
Power Automateでは、一連のアクションの流れを「フロー」という単位でまとめることができます。
画面左側に用意されているアクションを、中央のフローウィンドウにドラッグするだけでフローに追加することができます。アクションの詳細な動作については、フローウィンドウへ追加したときにパラメータで調整できます。
最初から最後までのすべてのアクションをMainフローひとつにまとめることも可能ですが、そうするとフローがとても長くなってしまい、後々変更を加えるときなどに分かりづらくなってしまいます。
そこで、特定の一部の処理を「サブフロー」としてまとめることができ、サブフローをMainフロー内で呼び出すことにより複雑で長い動きも分かりやすく管理できます。
今回は例として、お問い合わせフォームからメールがあった場合には、以下のような件名や本文のフォーマットが定まったメールが届くと仮定します。
そのメールの内容を、「問い合わせ履歴.xlsx」という名前のExcelに追記して保存します。
それを踏まえて、今回はMainフローを以下のように作成しました。
Mainフローの手順2では、Outlookを起動した後に、
- 問い合わせメールが届くアカウントの未読メール
- 件名に含まれる文字列
を条件にして、対象の問い合わせメールを抽出しています。
手順3~7では、未読の問い合わせメールが存在した場合には、本文データから必要な部分を抽出し、Excelへ保存するようにしています。
この部分はそれぞれ長くなってしまうため、サブフローに分けて処理しています。
もし新しい問い合わせがなかった場合には、手順9にてポップアップで通知を出すようにしています。
サブフロー「本文データの抽出」
このサブフローでは、メール本文内から特定の条件に合う文字列を抽出し、「問い合わせ」や「フリガナ」といった変数へ格納しています。
このフローの表示だけでは分かりにくいと思いますが、例えば「問い合わせ内容」であれば、今回のメールフォーマットから必ず「お問い合わせ内容:」と「お名前(漢字)」という文字列の間に記載されます。
そのため、「テキストのトリミング」アクションで「指定された2つのフラグの間にあるテキストを取得する」として、その2語の間にあるテキストを取得することで必要な内容を抽出できます。
また、指定の2語の間でトリミングすると、余計な改行が先頭や末尾に残ってしまいます。
それを削除するために、抽出した変数それぞれで先頭と末尾の空白文字をトリミングするという動作を入れています。
サブフロー「Excelへ記録」
メールから抽出した情報を、記録用のExcelに転記して保存しています。
ここでは、手順2で最初の空の行を取得しています。これにより、履歴が保存されている表の末尾を探して追記することができます。
表の末尾の各列に、抽出した内容をそれぞれ記入して保存してからExcelを閉じます。
実際に動作させてみる
保存したフローを実際に動作させてみましょう。
Outlookが自動的に起動し、対象のメールアドレスで未開封のメールがある場合にはメッセージを読み取り、記録用のExcelが起動します。
表の末尾に、名前・フリガナ等のデータが自動的に入力されて、Excelが閉じて終了となります。
フローを動作させた後にExcelを開いてみると、メールの内容が想定通り転記されていることが確認できました。
良かった点、改善が必要な点
良かった点としては、テキストのトリミングで必要な部分の抽出ができたところと、問い合わせメールが複数あった場合でもすべてがExcelへ転記できたところです。
ループの動作もできていて、面倒な作業を自動化するという目的を達することができたと思います。
ただ、このフローでは大きな問題がひとつありました。
フローを起動した時点でまだ問い合わせメールが受信されていない場合、フローの動作が受信よりも前になってしまい、受信してから問い合わせメールを抽出するという動きができませんでした。
先にOutlookを起動して、一度送受信を済ませてからフローを実行する必要がありました。
これについては、どうやら有料版のPower Automateで利用できる「トリガーによる実行」が必要なようです。
前半でもご説明した通り、無料版と有料版では利用できるアクションに違いがありますので、実現したい動作によっては有料版の検討が必要かもしれません。
RPAによる業務効率化の効果
業務の効率化という観点から見ると、今回のケースで想定した「メールチェック→Excelへ必要な内容を転記」という流れであれば、実際に行う時間は2分程度かと思います。
ほんのわずかな時間ではありますが、これを毎日行うとして1か月の業務日数を20日と想定すると、1ヶ月で単純に40分の作業を効率化できたと考えられるでしょうか。
今回のフローを作る際には、まだ慣れないため色々と調べつつ、想定した通りの動きができるようにテストも繰り返しながらだったので完成まで2時間程度でした。
そうなると、ざっくりですが3ヶ月程度運用すれば制作時間の元が取れたと考えられます。
例えば「問い合わせ内容に応じてベースとなる見積を自動作成する」ようなフローが追加できれば、もっと多くの作業時間を効率化できるようになるかと思います。
今回使用したように、メール本文の中にあるテキストを抽出し、Excelの見積ひな形へ転記したものを別名で保存する…といった形にすれば実現できる動作かなと考えられます。
このように考えると、私達の普段行っている一つ一つの作業も定型化できる部分が意外に多くあります。何気なく行っている業務一つ一つを分析してRPAで自動化するように取り組んでいけば、最終的には多くの時間を節約できて効率化に繋げられるのではないかと感じました。
また、RPAにより自動化することは単純に作業時間を圧縮するだけではなく、人為的なミスを減らすということにも繋がります。今回の例であれば、問い合わせメールを受けていたのに見逃してしまうというミスも防ぐことができ、貴重な案件を逃してしまう恐れも無くなります。
ミスが発生した場合のフォローの必要も無くせるかもしれないと考えれば、直接的に削減できる時間以上に効率化の恩恵を得られるのではないでしょうか。
おわりに
今回は初めてということもあり、効率化できる部分としてはわずかなところだったかなと思いますが、メールを開いて、文字を選択してコピーし、Excelシートにペーストして…という、普段何気なくやっていることを自動化できたのは単純に嬉しかったです。
改善点もまだまだありますが、RPAを利用するとこんなこともできるというサンプルにはなったのではないかと思います。
想定通りに自動化させるためにはそれなりに工夫が必要ですが、Power Automateならプログラム言語などを知らなくても適切なアクションを組み合わせていけば一連のフローが作成できます。
皆様も、決まったルールに沿って日常的に行う作業があれば、ぜひRPAで自動化できないか試してみてはいかがでしょうか。