Power Apps で配列内の条件に合うデータでメールを送信する

目次

はじめに

様々なデータから業務の自動化を進めるにあたり、ループ処理やメールの送信などを行う場面が出てくると思います。通常、このような処理を得意とするのは 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 での操作を学んでみようと思います。

データを準備

ループ処理で条件に合うデータでメールを送信する必要があるため、今回は以下のようなデータをコレクションで準備したいと思います。

ClearCollect(
col_addressList,
{
DispName: “Aさん”,
Mail: “A@hoge.onmicrosoft.com”
},
{
DispName: “Bさん”,
Mail: “B@hoge.onmicrosoft.com”
}
)

適当にボタンを配置し、 上記の関数をボタンの OnSelect プロパティに記載します。
以下のスクリーンショットは、ボタン押下後にコレクションをデータテーブルで表示した結果です。

今回データは配列として準備します。配列でないとループ処理を行えないので注意してください

ForAll と If 関数の解説

ループ処理では ForAll 関数を利用します。
ForAll 関数は以下の構文となっています

ForAll(
col_addressList,
If(
DispName = “Bさん”,
Collect(
col_sendmail,
{sendMail: Mail}
)
)
)

先ほどと同じように、2つ目のボタンを配置し、この関数をOnSelect プロパティに記載します。

本来は、If の条件分岐後にメール送付をする関数を入れるのですが、いったんここでは Collection 関数で、条件に合致するレコードのメールアドレスを取得するのみとしています。

「メール送信ボタン」を押下することで、右側のテキストラベルに該当のメールアドレスが表示されるようになっています。

今回はコレクションに格納されている素のデータを ForAll で処理します。データ量が多い場合は非常に処理時間が長くなるため、データソースが大きい場合は Filter 関数などを使って対象の処理データを減らすことを推奨します。
解説は以下の通り

メール送信の関数を入れてみる

それでは、「Collection 関数で条件に合致するレコードのメールアドレスを取得する」箇所を実際のメール送信関数に変更したいと思います。

その前に、メールを送信するためにはお約束の「Office 365 Outlook」のデータ ソースを追加します。

  1. 左側のメニューから「データ」(筒のアイコン)を選択し、検索欄に「outlook」を入力。
    表示された「Office 365 Outlook」を選択。
  2. もう一度「Office 365 Outlook」を選択。
  3. 「メール送信ボタン」の OnSelect プロパティを以下のように変更

これで修正は完了です。

なお、以下のようなエラーが出ると思うので、コメントアウトなどで修正してあげてください。

SendEmailV2 の補足

テストの実施

それでは「メール送信」ボタンのテストをしてみたいと思います。

・・・

メールが届きました!

宛先に関しては、Power Apps 内で実際にメールが届くメールアドレスに変更しています。今回は自分自身にメールしています。

まとめ

今回はコレクションに格納されているデータを使ってループ処理を行い、条件に合致したデータを使ってメールを送信しました。
データはコレクションを使っていますが、SharePoint Online のカスタムリストで管理しているような業務データでも同様の操作を行うことができます。

また、条件文を業務に合わせた形で修正すれば、条件に合う複数のメールアドレスに対して同時にメールを送付することができます。

たとえば、貸出管理簿のアプリを作成しておき、期限を過ぎても返却がないユーザに対してメールを送付するなどのシナリオで役に立つと思います。

1つ注意点としては、メールの送付先が大量にある場合は自テナントの Exchange Online にスパムメールと誤検知されないように注意してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトは reCAPTCHA と Google によって保護されていますプライバシーポリシー利用規約 申し込み。

The reCAPTCHA verification period has expired. Please reload the page.

目次