- はじめに
- 題材
- 元のデータを確認する
- 得たい結果を整理する
- 元データだけでは得られないデータを確認する
- テストデータを用意する
- Power Automateでテストデータを読み込む
- テストデータを絞り込む
- 元データだけでは得られないデータを生成する
- 分岐の実装をする
- 複数データでの判定を試す
- テストデータで実際の通知を行う(自分のみ)
- テストデータで実際の通知を行う(チームメンバー含む)
- 実際の通知を行う
- 補足
- おわりに
はじめに
この記事は、Power Automate Advent Calendar 2022 12月4日担当分の記事です。
Power Automateのフローを作成する際に、いきなり本番データを使ってフローの作成から始める、というのも一つの手なのですが、特に慣れないうちは、ある程度段階を踏んで進めたほうが結果的に早くフローが完成する、という事もあると思います。
本記事では、普段、僕がフローを作成する時に考える事や、実践していることをまとめてみました。かなり細かくステップを入れているので、全部実行するとかえって大変かもしれませんが、慣れや好みに応じて、役に立ちそうなところがあれば、部分的でいいので是非取り入れてみてください。
題材
今回は、「Excelで管理している書籍貸し出しリストを元に、未返却の人にリマインドメールを送る」というフローを考えてみたいと思います。
元のデータを確認する
まずは、どういったデータが利用できるかを確認します。
今回は「Excelで管理している書籍貸し出しリスト」が元のデータになります。
実データはこのようなデータだったとしましょう。*1
書籍名 | 貸出日 | メールアドレス |
---|---|---|
赤いくつ | 2022/11/28 | user3@example.com |
おやゆび姫 | 2022/12/2 | user6@example.com |
人魚の姫 | 2022/11/12 | user2@example.com |
はだかの王様 | 2022/11/16 | user3@example.com |
マッチ売りの少女 | 2022/11/27 | user7@example.com |
雪の女王 | 2022/11/5 | user6@example.com |
なお、ExcelをPower Automateで利用するにあたって、以下の条件を満たす必要があります。
- OneDriveまたはSharePoint Online上(Teams上)に保存してある
- テーブルが定義されている
得たい結果を整理する
元データを使って、どのような結果を得たいのか、を整理します。
整理は、紙やホワイトボードに書き出したり、OneNoteやPowerPointを利用したり、色々考えられますが、ここで重要なのは、この段階ではPower Automateはまだ触らない事です。
今回はPowerPointで整理してみました。
元データだけでは得られないデータを確認する
得たい結果、今回であればリマインドメールで使われている値の中で、元データに含まれてないものを確認します。
今回であれば、「姓」と「名」が含まれていません。また、「返却日」に関しても、Excelに直接データはありません。
これらのデータは、元のデータに追記をするのか、Power Automateの処理中で補うのか、考える必要があります。
可能であれば元データに手は加えない方が楽なので、ここではまず、「姓」、「名」、「返却日」はPower Automateの処理中で補う前提で考えていきたいと思います。
テストデータを用意する
そろそろPower Automateのフローを作成していくのですが、その前にテストデータを用意します。
というのも、本番データだといきなり対象ユーザーに通知メールが飛んでしまいます。フローが正しく出来ていないと、期限前にも関わらず通知メールが飛んでしまったり、意図しない宛先に飛んでしまう事があるかもしれません。まずは、テストデータを用意して進めることをお勧めします。
ただ、テストデータが本番データと形式が異なっていると、テストの意味がありません。そこで今回は、元のデータをコピーして、メールアドレスだけ自分の値に変えてテストデータにしたいと思います。
本番データが含まれるシートをそのまま複製し、
テーブル名やシート名がテスト用だと分かるように変更します。また、メールアドレスも自分の物にいったん変更します。
Power Automateでテストデータを読み込む
ようやくPower Automateの出番です。
今回は「スケジュール済みクラウドフロー」になりますが、作成時に、開始を未来の日付にしておいて、すぐに実行されないようにしておきましょう。
その上で、まずは、データを読み込むところまでで動作確認をします。分岐やメール連携は後回しです。
また、読み込むデータには、先ほど用意したテストデータを用います。
この状態で実行し、まずエラーが出ていないことを確認します。
続いて、実行データをダウンロードし、想定通りに値を取得できているか確認します。
ダウンロードしたデータはjson形式なのですが、そのままだと見にくいので、Visual Studio Codeなどで整形して読むと便利です。
今回の場合、確認したところ、返却日の日付がExcelのシリアル値になってしまっていました。このままだとこの後の処理も出来ないので、正しく読み取れるように修正する必要があります。
Power Automate上のExcelのアクションで、DateTime形式を修正します。
今度は正しく値を取れました。
ケースによってはExcel側の修正が必要だったり、フローの中で加工が必要なケースもあるかもしれません。いずれのケースでも、実際にメール送付などのアクションにつなげる前に、適切なデータを取れているか確認しておきましょう。
テストデータを絞り込む
データが適切に読み込めるようになったら、一度テストデータを絞り込みます。
今回の様にExcelの行をすべて読み込んで処理するフローの場合、基本は繰り返しで複数処理回処理を実行することになります。
ただ、最初は上手く出来ない可能性があるので、なるべくデータは減らしておきたいです。こういった場合、取得するエントリの数を制限する方法が便利です。
図のように「上から順に取得」に数字を入れます。今回はまず1件で試してみましょう。
実行すると、一番上にあるデータのみ読み取ってきました。
しばらくはこのデータを使って作りこみましょう。
元データだけでは得られないデータを生成する
続いて、元データだけでは得られないデータを生成していきます。
今回であれば、「姓」と「名」はOffice 365 Usersコネクタの「ユーザープロフィールの取得」アクションで、「返却日」は日時コネクタの「時間への追加」で出来そうです。
単純に実行結果で値を確認してもいいですが、テンポラリの変数を用意して、出力結果を確認する方法もあります。
項目数が多かったり、式を使って変換するようなケースでは、一度変数を使って出力結果を確かめたほうが便利なことがあります。必要に応じて使ってみてください。
実際の出力例です。
なお、当初の想定から抜けていましたが、フローが実行された日時が無いと返却日を過ぎているかどうか判定できないので、追加しました。
分岐の実装をする
今回のフローの肝になるところです。
最終的には「返却日を過ぎている場合にはメールを送る」ですが、ここは慌てず、返却日による分岐がちゃんと出来るかどうかを確認していきます。
今回の場合、現在時刻と、計算した返却日を比較して、返却日の方が古いかどうかを判定する必要があります。
意図通りに分岐が動いているか確認するために、両方の分岐で値を変数に出しておくと、トラブルシュートの役に立ちますので、セットしておきましょう。
実行すると、返却日が現在より先の場合に「いいえ」になっていました。今のところ、想定通り動いているように見えます。
複数データでの判定を試す
ここまで来たら、いったん、Excelで読み込むデータ数を増やしてテストします。読み込むデータに、判定で「はい」になるケースと「いいえ」になるケースが含まれている必要があります。
今回は読み込むデータを5件に増やしてテストを行います。
「はい」になるパターンも確認出来ました。
テストデータで実際の通知を行う(自分のみ)
では、いよいよメール通知の実装です。
とはいえ、ここではまだテストデータです。また、読み込むExcelのデータもまだ絞っておいて、通知対象のデータが1つか2つ程度になるよう調整しておきましょう。(通知先が自分しかいないとは言え、何通も通知が来ても困るので)
実行してメールを確認します。ほとんどいい感じだったんですが、今回は返却日の表記が分かりにくくなってしまいました。
このような結果になった場合は適宜修正していきましょう。
今回は、タイムゾーンを修正しつつ、表記を変換しました。
バッチリ修正出来ました。
テストデータで実際の通知を行う(チームメンバー含む)
ここまでくれば本番データで実行してもよさそうですが、もう1ステップ挟みたいと思います。
自分自身へのメールでは上手くいくけど、他の人に送ると上手くいかない、というケースが無いとも言えませんので、同じチームの方に協力してもらって、テストデータを書き換えましょう。
例えば、次のように、メールアドレスをfriend1@example.comに書き換えます。通知があるパターン、ないパターン、それぞれが含まれている事が好ましいです。
書籍名 | 貸出日 | メールアドレス | 通知の想定 |
---|---|---|---|
赤いくつ | 2022/11/28 | friend1@example.com | なし |
おやゆび姫 | 2022/12/2 | tfunakoshi@example.com | なし |
人魚の姫 | 2022/11/12 | tfunakoshi@example.com | あり |
はだかの王様 | 2022/11/16 | tfunakoshi@example.com | あり |
マッチ売りの少女 | 2022/11/27 | tfunakoshi@example.com | あり |
雪の女王 | 2022/11/5 | friend1@example.com | あり |
これでテストを行い、自分の結果を確認しつつ、協力者の通知メールを実際に見せてもらい、意図した通知が飛んでいるか、文面は意図したものか、を確認します。
実際の通知を行う
大変お疲れさまでした。ようやくデータを切り替えて、実際の通知を行います。
データを取得するテーブルを元のデータに切り替え、Excelのデータ取得数も元に戻します。
補足
今回は割愛しましたが、実際にはスケジュールでの送信になるので、テストデータで数日、スケジュール通り実行されるか確認する、というステップを入れることも出来ます。
また、本番データでの送信時にも初回はExcelでの読み込み数をフィルタして実行する、という事も考えられます。ただこの場合、実施済みの人に再送付しないように何らかの形で除外する必要があるので、その点にご注意ください。
おわりに
以上、僕がPower Automateのフローを作成する時に考える事や、実践しているステップについてご紹介しました。
一度参加してみたかったAdvent Calendar、ちょうど僕の大好きなPower AutomateのAdvent Calendarが開催されていたので参加してみました。皆さんのPower Automateライフに少しでもお役に立てば幸いです。
*1:書籍名は青空文庫で提供されているアンデルセン ハンス・クリスチャンの作品から拝借しました
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧