ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Outlook メールの下書きをPower Automate クラウドフローで作成する

 

はじめに

Power Automate クラウドフローでOutlook メールの下書きを作成する方法です。

 

考え方

Power Automate のOffice 365 Outlook コネクタには下書きメールを作成するアクションは用意されていませんが「HTTP 要求を送信します」アクションを使ってGraph APIを呼び出すことで作成することが可能です。

  • 新規メールの下書き
  • 返信するメールの下書き
  • 全員に返信するメールの下書き
  • 転送するメールの下書き
  • 下書きメールにファイルを添付する

のパターンを確認してみました。

 

1.新規メールの下書きを作成する

Graph API の「メッセージを作成する」を利用します。

learn.microsoft.com

 

フロー全体

1アクションだけです。

 

フロー解説

[Office 365 Outlook]HTTP 要求を送信します-下書きメールを作成

  • URI
  • メソッド
    • POST
  • 本文
    • 下書き保存するメッセージをJSONで指定します。
    • 一例は件名,本文,to,cc,bccを指定するとこんな感じです。
    • {
          "subject": "メールの下書きを作成するよ",
          "body": {
              "contentType": "HTML",
              "content": "<p>メッセージの本文です</p><p>テスト</p><p>なのです。</p>"
          },
          "toRecipients": [
              {
                  "emailAddress": {
                      "name": "strike",
                      "address": "GAT-X105@seed-dummy.onmicrosoft.com"
                  }
              },
              {
                  "emailAddress": {
                      "name": "rouge",
                      "address": "MBF-02@seed-dummy.onmicrosoft.com"
                  }
              }
          ],
          "ccRecipients": [
              {
                  "emailAddress": {
                      "name": "freedom",
                      "address": "ZGMF-X10A@seed-dummy.onmicrosoft.com"
                  }
              },
              {
                  "emailAddress": {
                      "name" : "strike freedom",
                      "address": "ZGMF-X20A@seed-dummy.onmicrosoft.com"
                  }
              }
          ],
          "bccRecipients": [
              {
                  "emailAddress": {
                      "name": "rising freedom",
                      "address": "STTS-909@seed-dummy.onmicrosoft.com"
                  }
              }
          ]
      }
      • subject
        • 件名
      • body
        • contentType
          • HTML , Text ←本文の形式を指定
        • content
          • 本文を記述。(Textの場合は\nで改行) 
      • toRecipients 
        • emailAddress ※複数指定可 
          • name
            • 宛先(To)の表示名(省略可能)
          • address
            • 宛先(To)のメールアドレス
      • ccRecipients
        • emailAddress ※複数指定可 
          • name
            • ccの表示名(省略可能)
          • address
            • ccのメールアドレス
      • bccRecipients
        • emailAddress ※複数指定可 
          • name
            • bccの表示名(省略可能)
          • address
            • bccのメールアドレス 
    •  その他設定可能な属性はこちらに記載されています。

実行結果

メールの下書きが作成されます。

 

2.返信の下書きを作成する

返信の場合は、下書きメッセージの作成→メッセージの更新の2ステップになります。

Graph API の「返信メッセージの作成(createReply)」でメールを作成したのちに、「メッセージを更新する」でメッセージの中身を更新しています。

 

learn.microsoft.com

 

learn.microsoft.com

 

フロー全体図

フロー解説

[Data Operation]作成-元メッセージのId

返信するメールのメッセージidが必要です。Office 365 Outlook コネクタのメールを取得する(V3)アクションなどの出力に含まれているものが利用できます。

今回はサンプルフローの為、作成アクションにidを直接格納しています。

 

[Office 365 Outlook]HTTP 要求を送信します-返信の下書きを作成

 

[Office 365 Outlook]HTTP 要求を送信します-返信の下書きメールを更新

作成した下書きメールを更新します。

  • URI
  • メソッド
    • PATCH
  • コンテンツの種類
  • 本文
    • メッセージをJSONで指定します
    • 一例はこんな感じ
    • {
       "body": {
       "contentType":"HTML",
       "content":"<p>やあ 元気かい?</p><p>これはテストメールなんだ</p>"
       }
      }
    • 新規メールの下書きの場合と同じです
    • その他設定可能な属性はこちらに記載されています。

実行結果

返信メールの下書きが作成されます。

 

3.全員に返信する下書きを作成する

元メールのTo,CCの全員に返信する下書きを作成することも可能です。

「2.返信メールの下書きを作成する」の場合とほぼ同じです。

「[Office 365 Outlook]HTTP 要求を送信します-返信の下書きを作成」アクションを下記に変更するだけです。URI以外のパラメータは共通です。

learn.microsoft.com

フロー解説

[Office 365 Outlook]HTTP 要求を送信します-全員返信の下書きを作成

 

実行結果

 

4.転送の下書きを作成する

元メールを転送する下書きを作成することも可能です。

元メールのTo,CCの全員に返信する下書きを作成することも可能です。

「2.返信メールの下書きを作成する」の場合とほぼ同じです。

「[Office 365 Outlook]HTTP 要求を送信します-返信の下書きを作成」アクションを下記に変更するだけです。URI以外のパラメータは共通です。

learn.microsoft.com

 

フロー解説

[Office 365 Outlook]HTTP 要求を送信します-転送の下書きを作成

 

実行結果



 

5.下書きメールにファイルを添付する

下書きメールにファイルを添付することも可能です。

  1. (新規/返信/転送)下書きメールを作成
  2. ファイルをOneDrive for Businessから取得
  3. ファイルに添付

の3ステップとなります。

 

フロー全体図

Onedrive for Business上のファイルを添付するイメージです。

フロー解説

[Office 365 Outlook]HTTP 要求を送信します-下書きメールを作成

まず添付ファイル無しの下書きメールを作成します。

 

[OneDrive for Business]パスによるファイル コンテンツの取得-添付ファイル

OneDrive for Business 常にあるファイルのコンテンツを取得します。

  • ファイルパス
    • 添付するファイルのパス
  • コンテンツタイプの推測
    • はい

 

[Variable]変数を初期化する-FileName

添付するファイルのファイル名です。

  • Name
    • FileName
  • Type
    • String
  • Value
    • last(
          split(
              actions('パスによるファイル_コンテンツの取得-添付ファイル')['inputs']['parameters']?['path'],
              '/'
          )
      )
    • actions関数で"パスによるファイル コンテンツの取得-添付ファイル"アクションに設定したファイルパスのパラメーターからファイル名を取得しています。

 

[Office 365 Outlook]HTTP 要求を送信します-ファイルを添付する

  • URI
    • a
  • メソッド
    • POST
  • コンテンツの種類
  •  本文
    • base64関数でエンコードして渡す 
    • {
        "@odata.type": "#microsoft.graph.fileAttachment",
        "name": "@{variables('FileName')}",
        "contentBytes": "@{base64(body('パスによるファイル_コンテンツの取得-添付ファイル'))}"
      }

 

実行結果

ファイルが添付された下書きメールが作成されます。



 

参考にしたページ

actions関数について学ばせていただきました。わたるふさんいつもありがとうございます。

wataruf.hatenablog.com

 

公式リファレンスのチェックは必須です。

learn.microsoft.com

 

さいごに

メール作成系のGraph APIが[Office 365 Outlook] コネクタの「HTTP要求を送信します」アクションで使えることを確認しただけですが、備忘録的にまとめてみました。