Microsoft Graph APIでカンタンに
Power AutomateでOutlookメールの下書きを作成する

公開日:

Power Automate(クラウドフロー)のOutlookコネクタは、メールの送信・返信などが出来る便利なコネクタです。・・・が、メールの下書きを作成するというアクションが用意されていません。

そこで今回は、「HTTP要求を送信」アクションからMicrosoft Graph APIを使うことで、下書きメールを作成する方法をご紹介します。

Outlookメール下書きの作成には「HTTP要求を送信します」を使おう

活用シーン

定型的なメールの送信には、Power Automate(クラウドフロー)のOutlookコネクタが便利です。

よくあるパターンは、Excel OnlineやSharePointリストで、メーリングリストを用意するやり方です。そのExcelテーブルまたはSharePointリストから、宛先メールアドレスや氏名などを取得し、動的な値として「メールの送信」アクションに当て嵌めると、メール一斉送信フローの出来上がりです。

これはこれでとても有用なのですが、「メールの作成だけしておいて、内容確認のうえ自分のタイミングで送りたい」とか、「イレギュラーなケースには、送信前に自分で手を加えたい」とか、いったん下書きに保存しておきたいというニーズには対応できません。

こういうときは、標準アクションではなくMicrosoft Graph API呼び出しを使いましょう。今後、ChatGPTのようなAIにメールを書いてもらう使い方も出て来るでしょうから、送信前にワンクッション置くやり方の一つとして覚えておくと良さそうです。

「HTTP要求を送信します」でメールを作成

下書きメールの作成には、「HTTP要求を送信します」アクションを使います。① Office 365 Outlook、② Offce 365 Users、③ Office 365 Groups と異なる3種類のコネクタで「HTTP要求を送信します」がありますが、どれを使ってもOKです。
(ただし前二者はプレビューです)

❕2023年9月 更新情報 ❕
③のOffice 365 Groupsコネクタの「HTTP要求を送信します」は廃止になりました。
代わりのアクション「HTTP要求 V2 を送信する」では、下記のURIは使えませんので、①か②いずれかをお使いください。

Three different connectors
3種類のアクションどれを使ってもOKです

アクションの設定ですが、
① URIに https://graph.microsoft.com/v1.0/me/messages と入力、
② メソッドには POST を選びます。
③ 本文の部分は、以下サンプルを参考に、必要な箇所を動的な値に置き換えましょう。

HTTP Send Action Setting
ハイライト部分をご自分の業務に合わせて変更してください

{
    "subject":"Did you see last night's game?",
    "importance":"Low",
    "body":{
        "contentType":"HTML",
        "content":"They were <b>awesome</b>!"
    },
    "toRecipients":[
        {
            "emailAddress":{
                "address":"AdeleV@contoso.onmicrosoft.com"
            }
        }
    ]
}

↑公式サイトのサンプルを掲載しています
https://learn.microsoft.com/en-us/graph/api/user-post-messages?view=graph-rest-1.0&tabs=http#example-1-create-a-new-message-draft-using-json-format

これで完成です。テスト実行してみて、自分のメールボックスの下書きにメールが出来ているか確認しましょう。

Microsoft Graph APIって…?

ちなみに、Microsoft Graph APIとはMicrosoft365関連のデータを取得・更新する際に使えるAPIです。

Power Automateでは、標準アクションで数多くのことが出来ます。しかし、それで不十分な場合には、HTTP要求からGraph APIを使うことで、機能を補完したり、処理を高速化したりすることが出来ます。

他のも見てみたい方は、↓のGraph Explorerからチェックすることが出来ます。
https://developer.microsoft.com/en-us/graph/

添付ファイルも付けてみる

ついでに、下書きしたメールに添付ファイルも付けてみます。
手順としては、下書きメール作成後、

① SharePointからファイルを取得する(OneDriveからでも可)、
② 作成アクションでファイルコンテンツをBase64に変換(直接HTTP要求アクションの本文内に式を書いてもOK)、
③ 再びHTTP要求で添付ファイルをくっ付ける、

という流れです。

メール作成のあとに3つアクションを追加

まず、①のSharePointアクションでファイルコンテンツを取得したら、②の作成アクションで、以下↓のようにbase64関数で変換してください。

base64 function
base64変換をする

③のHTTP要求を送信で、設定するURIは、 https://graph.microsoft.com/v1.0/me/messages/{メールID}/attachments です。
メールIDの部分は、先に行ったアクションから動的な値を拾って来ればよいので、
https://graph.microsoft.com/v1.0/me/messages/@{body('HTTP_要求を送信します(メール作成)')['id']}/attachments
になります。

メソッドは先ほどと同じくPOSTです。

最後に、要求本文には、以下のJSONを参考に、contentBytesにBase64変換した出力結果を当て嵌めます。


{
  "@odata.type": "#microsoft.graph.fileAttachment",
 "name": "ファイル名.拡張子",
  "contentBytes": "@{outputs('作成(Base64へ変換)')}"
}

↑name, contentBytesの値をご自分の業務に合わせて変えてください。

こちらのスクリーンショットも参考にしてください。

メールidは一つ前のHTTP要求から、contentBytesにはBase64変換の出力結果を。

以上で、添付ファイル付きの下書きメールも完成です。

おわりに(お礼)

このように、HTTP要求を使うとPower Automateの標準アクションでは出来ないコトも可能になるので、活用の幅が広がります。

特に、ここで紹介したアクションは、Graph APIを使うのに下準備がほとんど要らず、見よう見まねでやってもどうにかなる、というのも大きな利点です。他にも出来ることが無いか調べてみると良いかもしれません。

なお、このテクニックは、Damien BirdさんのYouTubeで紹介されていたものです。
(もっとスマートなやり方で添付ファイルを処理しているので、リンク先でご覧ください。)

Create a draft Email in Outlook - DamoBird365

Learn how easy it is to create a draft email in your Outlook Draft folder using Power Automate. Rather than send the email direct from Power Automate, let me s…

Damienさんはこの他にも、毎回びっくりするような活用方法を教えてくれています。
今回、下書きメール作成のやり方を、日本語で書いて良いか尋ねたところ、快くOKしていただきました。
ありがとうございます。

Thank you, DamoBird365!