くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【PowerApps】PowerApps から添付ファイル付きのメールを送信する方法

・はじめに

こんにちは、くらっちです。
PowerAppsで添付ファイル付きのメールを送信する方法を説明します。
PowerApps でテキストだけのメールは送信できるけど、添付ファイル付けて送信するにはどうしたらいいんだ!!という場合に、是非参考にして頂けたらと思います。

※この記事はQiita から移行して、最新の情報に更新しています。

・目次

・必要なコネクタ

今回添付ファイル付きのメールを送るために必要なコネクタは下記の2つです。

  • Office365Outlook コネクタ
  • SharePoint コネクタ
    ※データソースとして追加するのはカスタムリスト 必須ですが、新規作成したばかりのリストで大丈夫です。

・メール送信するための事前準備

メールを送るために必要な「宛先」「件名」「本文」を記載するテキストボックスと、「送信」ボタンを用意します。

この記事ではメール送信に使用する各パーツ名を下記のように定義しました。
宛先:ToTextBox
件名:SubjectTextBox
本文:BodyTextBox

送信ボタンの処理は後ほど設定するため、今は各パーツの配置のみでOKです!

f:id:kurakurattyo:20211116224258p:plain:w650

SharePoint から「添付ファイル」列をコピーする

添付ファイルを送信するには、ファイルを添付するための列(フィールド)が必要です。
しかし、PowerApps にはそんな便利機能は現時点で実装されておりません。

ご存知の方も多いと思いますが、SharePointのカスタムリストには添付ファイルを登録するための列が存在しています。
そうです、裏技で カスタムリストの添付ファイル列 を利用してメールを添付します!!

[挿入] > [フォーム] > (フォーム内)[編集] > (データソース)[なし] > [SharePointコネクタ] をクリックします。

f:id:kurakurattyo:20211116232742p:plain

Formにフィールドが複数追加されるので、「添付ファイル_DataCard」内の「DataCardValue」をコピーし空きスペースに貼り付けます。

f:id:kurakurattyo:20211116232844p:plain

添付ファイルのDataCardValueを空いたスペースに貼り付けたら、Formは不要なので削除します。

f:id:kurakurattyo:20211116233033p:plain

コピーしたDataCardValueにエラーが発生しているので下表の通りに修正します。

プロパティ名 修正前 修正後
Items Parent.Default (空白)
Tooltip Parent.DisplayName ""
DisplayMode Parent.DisplayMode DisplayMode.Edit
BorderColor If(IsBlank(Parent.Error), Parent.BorderColor, Color.Red) Black


添付ファイルのDataCardValueがコピーできたら、SharePointコネクタは不要になるので、削除します。

f:id:kurakurattyo:20211116234333p:plain:w400

・送信ボタンにメール送信処理を追加する

ここまでで、画面の準備は整いました。
後は、添付ファイルをどうやってメール送信するか、です。

今回は、Office365Outlookコネクタの「Office365Outlook.SendEmailV2」を利用してメールを送信します。
Office365Outlook.SendEmailV2の構文は下図の通りです。

f:id:kurakurattyo:20211116234550p:plain

送信ボタンのOnSelectに下記コードを入力します。
※ToTextBox、SubjectTextBox、BodyTextBox、DataCardValue12_1は用意したパーツ名に合わせて変更してください。

Office365Outlook.SendEmailV2(
  ToTextBox.Text,
  SubjectTextBox.Text,
  BodyTextBox.Text,
  { Attachments: AddColumns(
    RenameColumns( DataCardValue12_1.Attachments ,"Value","ContentBytes"),
    "@odata.type",""
  )}
)

・実行してみる

各項目入力し添付ファイルを付けて送信してみると。。。
f:id:kurakurattyo:20211116234738p:plain:w570

送信結果
添付ファイル付きのメールが送信できました!!
f:id:kurakurattyo:20211116234850p:plain:w570

・ちょっとだけ解説

送信ボタンのOnSelectに設定したソースコードについて解説します。

コード中のAttachments:で添付ファイルの情報を扱います。
Attachmentsが扱えるのはTable値です。
下記リンク先を確認すると、Attachements で必要なレコードは3つ。
 参考:ファイルが添付されたメッセージを送信する

  • Name
  • ContentBytes
  • @odata.type

しかし、SharePoint リストからコピーした添付ファイル列の「DataCardValue12_1.Attachments」には Name と Value しかありません。
f:id:kurakurattyo:20211116235003p:plain:w430

このままでは添付ファイルを送ることはできないので、Addcolumns と RenameColumns を利用してレコード「Value」を「ContentBytes」に修正し、「@odata.type」を追加します。

下図の通り必要なレコードが準備できました。これで添付ファイルを送信できます。
f:id:kurakurattyo:20211116235110p:plain