MS Power Automate で文字列の一部を編集してPlanner のタスクを作成してみた【Power Automate Tips】

日商エレクトロニクスでイベントの管理やデジタルレイバーアカデミーの運営部分を担当している黒木です。
私の所属する部署においてかなりの若手で、諸先輩たちに日々ご指導いただきつつ、RPAツールを使った業務の効率化を追求しています。

さて、その中でも今回はPower Automate勉強会で意外に盛り上がった、”Outlookメールの本文の一部だけを引っ張ってきて、Microsoft Plannerのタスクを作成する”方法をご紹介します。

皆さんも Power Automate を用いて、メールからPlannerのタスクを自動で作成したことはありませんか?
簡単にタスクができるので非常に便利ですよね。

ただし、そのままタスクを作成するとメールの全文章がPlannnerに転記されてしまい、「○○さん、お疲れ様です黒木です。」「以上、よろしくお願いします。~~~~(署名)」など、タスク要らない部分が含まれてしまい、とってもブサイクになってしまいます。。。

ということでちょっと手を加えてみました。

やりたいこと

1.受信したOutlookメールの内容を読み取って、

2.plannerに記載し、日程の設定や担当者割り振り、既定のチェックリストを付けてくれて、

3、作成をTeamsで教えてくれる。

という簡易的なチェックリスト自動生成ツールを作成したい。

Power Automate のフローを組んでみる

フロー全体俯瞰

《Power Automateで設定する内容》

  1. セミナー申し込みに関する自動応答メールをOutlookにて受信(トリガー)
  2. タイムゾーンの変更(メール受信時間を東京時間へ変換)
  3. HTMLメールをTEXT形式に変換
  4. 変数の初期化ゾーン
  5. 件名、本文に含まれる不要な文字列を削除
  6. プランナーにてタスクを作成
  7. タスク詳細に「説明、各種チェック項目」を追加
  8. Teamsにてタスクが作成されたことを通知

※作成で変数の設定がうまくされているかのチェック(メンテナンス用)

項目ごとの注意点

1.セミナー申し込みに関する自動応答メールをOutlookにて受信。(トリガー)

ある程度Outlookでルールを使いソートを掛けてフォルダ分けをしておくと、後ほど引用元のメールを探す際に便利になるのでフォルダ分けしておくことをお勧めします。

2.タイムゾーンの変更(メール受信時間を東京時間へ変換)

クラウドフローはUTC時間が利用されているのでチャットに日時を掲載したかったら時間変換が必要になるのでここで受信時間を変換しています。

注意点「plannerへの時間設定は変換しちゃダメ?!」

一度完成したフローを自慢げに社内で見てもらったところ、先輩からありがたい下記突っ込みを受けました。

Plannerの「タスクを作成」アクションで指定する開始日時、期限日時はUTC時刻として受け付けられます。
ですがPlanner上でその日時(Planner上では日付のみ)を表示する際は、ご丁寧にJSTに変換してくれます(ロケールに併せて変換?)
なので、JSTで日時を指定すると、指定する日時によっては日付が1日後ろにずれる場合があります。※例えば日本時間”2021/08/27 18:24”をそのまま開始日に指定すると、Plannerのタスク上では[2021/8/28]が開始日として表示されます。なので、Plannerに渡す時間はUTCのままとするのがいいっぽいです。※昼過ぎ14時くらいまでにテストすると日付のずれが生じないので結構気づかないかもです。

つまりは下図のここ!の部分に変換後の時間を入れると9時間分ズレてしまうよとということでした!
一人で作って運用してたら絶対気付かなかったです。。。

こちらは6.でこの部分出てくるので頭の片隅にでも覚えておいてください。

3.HTMLメールをTEXT形式に変換

HTMLメールの本文を利用しようとすると内容の転記がし辛かったりするので、形式をシンプルなテキスト形式へ変更。

4.変数の初期化ゾーン

変数の初期化はスコープにも納められず格納が出来ませんので少しでもスペースを取らないように並列処理で分岐させて管理しています。

5.件名、本文に含まれる不要な文字列を削除

3の工程を挟めば基本はプランナーに直接「動的なコンテンツ」を利用して挿入することができるため不要。
今回は本文の不要な文字列を削除するため挿入。

replace関数と変数を利用して件名や本文から不要と思われる部分を削除します。

Tipsとしてこんな工夫でメンテナンスを容易にしています。

replace(variables('件名'),variables('削除件名'), '')としておくと、件名作成にある関数を直接書き換えることが必要でなくなるのでこの構造にしておく。
※variables('○○')で「名前が○○な変数を参照する」という意味。

不要な文字列を削除

関数指定する際の記載における注意点 「シングルクォーテーション」

関数指定の際variables('件名')と記載しましたが、ここで注意しないといけないのが文字列を指定する際に利用する記号が'シングルクォーテーション'であるということです。

Excelで文字列を指定する際にも"ダブルクォーテーション"を利用するので間違えないように注意が必要です。

6.プランナーにてタスクを作成

5.で加工したタイトル等を用いてタスクを作成。
先ほど注意点で記載した通り、開始日はメールの受信日を設定。

再掲になりますが、注意事項として、ここで変換した時間をplannerの開始日時に設定するとズレが生じてしまうので気を付けましょう。
詳しくは下記を読んでみてください。

7.タスク詳細に「説明、各種チェック項目」を追加

説明には加工した本文を入力。
チェックリストには「タスクIDコンテンツに-1などしたユニークになる値」をIDとしたチェックリストを作成。

タスク詳細を追加

ということで完成したplannerがこちら

8.Teamsにてタスクが作成されたことを通知

タスクタイトルと追加された時間をTeamsに投稿。

完成したものがこんな感じです。

今回の Power Automate フローまとめ

今回のフローではReplace関数を用いたことによってちょっと複雑な感じに見えますが、転記される文字の細部にこだわらなければ本当に簡単に案件管理をすることが出来るようになります。
上記Replace関数を利用すると、メール本文から署名を削除したりすることもできるのでお勧めです!

ということで簡単なフローですが自動チェックリスト作成フローの紹介でした!

私はまったくのプログラミング未経験者ですが、配属されてすぐに受講した弊社デジタルレイバーアカデミーで基礎的な知識を体系的に学んでいたことでここまで自由に利用できたと感じています。

この記事をシェアする

前の記事

【 Power Automate Tips】クラウドフロー に “例外処理&#…

次の記事

【Blue Prism Tips】不適切な 例外タイプ が広まる理由とその削除方法