はじめに
様々なデータから業務の自動化を進めるにあたり、ループ処理やメールの送信などを行う場面が出てくると思います。通常、このような処理を得意とするのは Power Automate となりますが、単純なループや条件であれば Power Apps 用いても同様の処理を行うことができます。
今回は、Power Apps を用いて、配列内のデータをループ処理・条件分岐によってメール送信処理を行ってみようと思います。
この記事のまとめ
- Power Apps 内で扱っている配列データを準備して ForAll 関数でループする
- ループ中に条件に合うデータがあればメールを送信する
- Power Automate でなくても Power Apps 単体で処理できる
Power Apps と Power Automate の違い
Power AppsとPower Automate は、それぞれ異なる目的と機能を持っています。非常に簡単ですが以下のようにまとめます。
Power Apps:
用途:
ユーザーインターフェースの作成が主な目的
特徴:
フォームやアプリケーションのビジュアルなデザインでUIを表現でき、ユーザーがデータの入力や表示を行うためのコントロールが備わっている。アプリの作成が容易。
Power Automate:
用途:
ワークフローの自動化が主な目的
特徴:
異なるアプリケーションやサービス間でデータのインプット・アウトプットの自動化が得意。イベントトリガーに基づいてアクションを実行し、バックエンド処理を効果的に自動化することができる。定型業務やルーチンなタスクの自動化を得意する。
以上のように、Power Apps や Power Automate にはそれぞれ特徴があります。
ただし、今回のタイトルのような「配列内の条件に合うデータでメールを送信する」の場合、ユーザ操作起点なのであれば、Power Apps、Power Automate どちらを利用しても問題ありません。
今回は、ユーザの操作起点である Power Apps での操作を学んでみようと思います。
データを準備
ループ処理で条件に合うデータでメールを送信する必要があるため、今回は以下のようなデータをコレクションで準備したいと思います。
col_addressList,
{
DispName: “Aさん”,
Mail: “A@hoge.onmicrosoft.com”
},
{
DispName: “Bさん”,
Mail: “B@hoge.onmicrosoft.com”
}
)
適当にボタンを配置し、 上記の関数をボタンの OnSelect プロパティに記載します。
以下のスクリーンショットは、ボタン押下後にコレクションをデータテーブルで表示した結果です。
今回データは配列として準備します。配列でないとループ処理を行えないので注意してください
ForAll と If 関数の解説
ループ処理では ForAll 関数を利用します。
ForAll 関数は以下の構文となっています
col_addressList,
If(
DispName = “Bさん”,
Collect(
col_sendmail,
{sendMail: Mail}
)
)
)
先ほどと同じように、2つ目のボタンを配置し、この関数をOnSelect プロパティに記載します。
本来は、If の条件分岐後にメール送付をする関数を入れるのですが、いったんここでは Collection 関数で、条件に合致するレコードのメールアドレスを取得するのみとしています。
「メール送信ボタン」を押下することで、右側のテキストラベルに該当のメールアドレスが表示されるようになっています。
メール送信の関数を入れてみる
それでは、「Collection 関数で条件に合致するレコードのメールアドレスを取得する」箇所を実際のメール送信関数に変更したいと思います。
その前に、メールを送信するためにはお約束の「Office 365 Outlook」のデータ ソースを追加します。
- 左側のメニューから「データ」(筒のアイコン)を選択し、検索欄に「outlook」を入力。
表示された「Office 365 Outlook」を選択。
- もう一度「Office 365 Outlook」を選択。
- 「メール送信ボタン」の OnSelect プロパティを以下のように変更
これで修正は完了です。
なお、以下のようなエラーが出ると思うので、コメントアウトなどで修正してあげてください。
テストの実施
それでは「メール送信」ボタンのテストをしてみたいと思います。
・・・
メールが届きました!
まとめ
今回はコレクションに格納されているデータを使ってループ処理を行い、条件に合致したデータを使ってメールを送信しました。
データはコレクションを使っていますが、SharePoint Online のカスタムリストで管理しているような業務データでも同様の操作を行うことができます。
また、条件文を業務に合わせた形で修正すれば、条件に合う複数のメールアドレスに対して同時にメールを送付することができます。
たとえば、貸出管理簿のアプリを作成しておき、期限を過ぎても返却がないユーザに対してメールを送付するなどのシナリオで役に立つと思います。
1つ注意点としては、メールの送付先が大量にある場合は自テナントの Exchange Online にスパムメールと誤検知されないように注意してください。
コメント