ごきげんよう、百合宮桜(Miyu)です(≧▽≦)
最近、Office 365 Outlook コネクタにメールの下書き関係のアクションが増えました。これらを使って、Power Apps でメールの下書きを作成する方法を紹介します。
| Power Automate のアクション名 | Power Apps での名称 |
|---|---|
| メールメッセージを下書きする | Office365Outlook.DraftEmail |
| メールメッセージの下書きを更新する | Office365Outlook.UpdateDraftEmail |
| メールメッセージの下書きを送信する | Office365Outlook.SendDraftEmail |
メール送信画面の作成方法
Power Apps でメール送信画面を作りたい時は「電子メール」テンプレートが便利です。新しい画面 > 電子メール をクリックするだけで簡単にメール画面が作成できます。
電子メールのテンプレートでは送信アイコンの OnSelect プロパティにメールを送信する式が入っています。
ここを下書きに変更するか、別に下書き作成用のボタンを作る必要があります。今回は別にボタンを作成して作っていきます。

下書きの作成方法
下書き作成ボタンと添付する画像をアップロードする「画像の追加」コントロールを配置して
下書き作成ボタンの OnSelect プロパティに以下の式を書きました。
Set(_emailRecipientString, Concat(MyPeople, Mail & ";"));
Office365Outlook.DraftEmail(
_emailRecipientString, //宛先(To)
TextEmailSubject1.Text, //件名
TextEmailMessage1.Text, //本文
{
Importance:"Normal",//重要度
Attachments:{ContentBytes:UploadedImage1.Image,Name:GUID()&".jpg"},//添付ファイル
Cc:User().Email, //CC
Bcc:User().Email //BCC
}
);
Reset(TextEmailSubject1);
Reset(TextEmailMessage1);
Clear(MyPeople)
_emailRecipientString は宛先を格納する変数です。
宛先に選択したメールアドレスは MyPeople というコレクションに格納されているので、これらを ; でつなげたテキストを作成しています。
そして下書きを作るのに必要な情報を Office365Outlook.DraftEmail( のあとに記述しているという状態です。記述の順番は補助機能で出て来たものに沿いましょう。
Power Automate で詳細パラメーターに含まれるものは、配列として格納しなければいけないようです。
下書き作成ボタンを押すと自分の Outlook メールの下書きに以下のようなメールが保存されます。
下書きの更新と送信について
下書きを更新 or 送信するには MessageId が必要です。
現在、Office 365 Outlook コネクタに下書きの一覧を取得するような機能はありません。その為、Power Apps から下書きを呼び出すには下書き作成時にSharePoint Lists などに MessageId を保存しておく必要があります。
MessageId を取得するには Office365Outlook.DraftEmail の式の戻り値を変数に格納するのが簡単です。その為、以下のように式を修正する必要があります。
Set(_emailRecipientString, Concat(MyPeople, Mail & ";"));
Set(MessageData,
Office365Outlook.DraftEmail(
_emailRecipientString, //宛先(To)
TextEmailSubject1.Text, //件名
TextEmailMessage1.Text, //本文
{
Importance:"Normal",//重要度
Attachments:{ContentBytes:UploadedImage1.Image,Name:GUID()&".jpg"},//添付ファイル
Cc:User().Email, //CC
Bcc:User().Email //BCC
}
)
);
Patch(
MessageIdを保存する SharePoint Lists,
{
Title:MessageData.Subject,
MessageId:MessageData.Id
}
);
Reset(TextEmailSubject1);
Reset(TextEmailMessage1);
Clear(MyPeople)
ただ MessageId を指定しても以前書いた件名や本文を呼び出せるわけではないので、以前書いたものを見ながら修正するということを実現するにはひと工夫いるかと思います(このあたりは時間がある時に別記事で……💦)
終わりに
いかがでしたか?
以前は GraphAPI or デスクトップフロー を利用しないとできなかった下書き保存がとても簡単にできるようになりました。
- 社外へのメールは自動化NGだが、せめて下書きを作るまでは自動化したい
- 特定の宛先に送る時は上長の承認が必要
という時に結構役立つ機能かと思います。
ぜひ活用してみてくださいね!








