・はじめに
こんにちは、くらっちです。
PowerAppsで添付ファイル付きのメールを送信する方法を説明します。
PowerApps でテキストだけのメールは送信できるけど、添付ファイル付けて送信するにはどうしたらいいんだ!!という場合に、是非参考にして頂けたらと思います。
※この記事はQiita から移行して、最新の情報に更新しています。
・目次
- ・はじめに
- ・目次
- ・必要なコネクタ
- ・メール送信するための事前準備
- ・SharePoint から「添付ファイル」列をコピーする
- ・送信ボタンにメール送信処理を追加する
- ・実行してみる
- ・ちょっとだけ解説
・必要なコネクタ
今回添付ファイル付きのメールを送るために必要なコネクタは下記の2つです。
- Office365Outlook コネクタ
- SharePoint コネクタ
※データソースとして追加するのはカスタムリスト 必須ですが、新規作成したばかりのリストで大丈夫です。
・メール送信するための事前準備
メールを送るために必要な「宛先」「件名」「本文」を記載するテキストボックスと、「送信」ボタンを用意します。
この記事ではメール送信に使用する各パーツ名を下記のように定義しました。
宛先:ToTextBox
件名:SubjectTextBox
本文:BodyTextBox
送信ボタンの処理は後ほど設定するため、今は各パーツの配置のみでOKです!
・SharePoint から「添付ファイル」列をコピーする
添付ファイルを送信するには、ファイルを添付するための列(フィールド)が必要です。
しかし、PowerApps にはそんな便利機能は現時点で実装されておりません。
ご存知の方も多いと思いますが、SharePointのカスタムリストには添付ファイルを登録するための列が存在しています。
そうです、裏技で カスタムリストの添付ファイル列 を利用してメールを添付します!!
[挿入] > [フォーム] > (フォーム内)[編集] > (データソース)[なし] > [SharePointコネクタ] をクリックします。
Formにフィールドが複数追加されるので、「添付ファイル_DataCard」内の「DataCardValue」をコピーし空きスペースに貼り付けます。
添付ファイルのDataCardValueを空いたスペースに貼り付けたら、Formは不要なので削除します。
コピーしたDataCardValueにエラーが発生しているので下表の通りに修正します。
プロパティ名 | 修正前 | 修正後 |
---|---|---|
Items | Parent.Default | (空白) |
Tooltip | Parent.DisplayName | "" |
DisplayMode | Parent.DisplayMode | DisplayMode.Edit |
BorderColor | If(IsBlank(Parent.Error), Parent.BorderColor, Color.Red) | Black |
添付ファイルのDataCardValueがコピーできたら、SharePointコネクタは不要になるので、削除します。
・送信ボタンにメール送信処理を追加する
ここまでで、画面の準備は整いました。
後は、添付ファイルをどうやってメール送信するか、です。
今回は、Office365Outlookコネクタの「Office365Outlook.SendEmailV2」を利用してメールを送信します。
Office365Outlook.SendEmailV2の構文は下図の通りです。
送信ボタンのOnSelectに下記コードを入力します。
※ToTextBox、SubjectTextBox、BodyTextBox、DataCardValue12_1は用意したパーツ名に合わせて変更してください。
Office365Outlook.SendEmailV2( ToTextBox.Text, SubjectTextBox.Text, BodyTextBox.Text, { Attachments: AddColumns( RenameColumns( DataCardValue12_1.Attachments ,"Value","ContentBytes"), "@odata.type","" )} )
・実行してみる
各項目入力し添付ファイルを付けて送信してみると。。。
送信結果
添付ファイル付きのメールが送信できました!!
・ちょっとだけ解説
送信ボタンのOnSelectに設定したソースコードについて解説します。
コード中のAttachments:で添付ファイルの情報を扱います。
Attachmentsが扱えるのはTable値です。
下記リンク先を確認すると、Attachements で必要なレコードは3つ。
参考:ファイルが添付されたメッセージを送信する
- Name
- ContentBytes
- @odata.type
しかし、SharePoint リストからコピーした添付ファイル列の「DataCardValue12_1.Attachments」には Name と Value しかありません。
このままでは添付ファイルを送ることはできないので、Addcolumns と RenameColumns を利用してレコード「Value」を「ContentBytes」に修正し、「@odata.type」を追加します。
下図の通り必要なレコードが準備できました。これで添付ファイルを送信できます。