15
15

Power Automate & Microsoft Listsでメール下書き作成ツールを作る

Posted at

はじめに

Power AutomateのOffice 365 Outlook、大変便利で重宝するシーンが多いです。
しかしながら、メールの下書きを作成する というアクションが存在しません。

2024.03.10時点の情報です

Google WorkspaceでGoogle Apps Scriptを活用したことがある場合、なおのことそう思うシーンはないでしょうか?

sample.gs
function CreateDraft() {
  let recipient = "aaa@gmail.com";
  let subject = "テストです";
  let body = "ここは本文です";
  let options = {
    cc: "cc@gmail.com",
    bcc: "bcc@gmail.com"
  };
  // ここでメール下書き作成
  GmailApp.createDraft(recipient, subject, body, options);
}

メールの自動送信非常に便利ですが、設定を誤ると事故につながる場合も。

そんなときに、SNSで尊敬しているささみさん下記のブログを掲載されていました。

上記を活用し、Microsoft Lists (SharePoint Listsで代替可能)とPower Automateで、Outlookの下書きを複数設定し、気軽に送信できるツールを作りたいと思います!

Microsoft Lists

Microsoft ListsとSharePoint Listsについて、よくごっちゃになって語られることがありますが、実態としては別物です。

  • Microsoft Listsは、Microsoft 365の製品群の中でも独立したアプリケーション
  • SharePoint Listsは、SharePoint内に統合されたカスタマイズオプションを持つ機能

Listsを開くと、上記すべてのリストが表示されるので、同一のものでは🧐?という印象を受けますが、厳密には違うのよくらいに捉えてください。

にわかなので深堀はやめておきます。

メールの下書きツールは、自分のアカウントに紐づく関係ことから、マイリストを使った運用を想定しています。

実現する機能

Listsの列の書式設定を一工夫し、選択した行のSubjectBodyToCcBccからメールの下書きを自動作成するツールを作成します。

イメージはこちら

マイビデオ.gif

ボタンをクリックすると、Outlookでメールの下書きが作られるツールです。
テンプレートの増減にも対応できるところがNice👍

列の書式設定

Listsの列の書式設定に一工夫加えることで、列にボタンを設定し、Power Automateを実行することができます。

image.png

右側にパネルが表示されるので、JSONを設定します。

image.png

設定するJSONはコチラ!

列の書式設定.json
{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "button",
  "customRowAction": {
    "action": "executeFlow",
    "actionParams": "{\"id\": \"ここにGUIDを設定してください\"}"
  },
  "attributes": {
    "class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover"
  },
  "style": {
    "border": "none",
    "background-color": "transparent",
    "cursor": "pointer"
  },
  "children": [
    {
      "elmType": "span",
      "attributes": {
        "iconName": "Fluent UIのアイコンを設定する場所はこちら"
      },
      "style": {
        "padding-right": "6px"
      }
    },
    {
      "elmType": "span",
      "txtContent": "文字列の設定場所"
    }
  ]
}

非常にCool。
列の書式設定のサンプルは、Microsoft 365 & Power Platform CommunityGitHubを参考にしました。
最高にCoolなサンプルが盛りだくさんで、リポジトリを見ているだけで、時間が溶けます。

内蔵するIconは、Fluent UIから見つけることができます。

映えます。

JSONのうち、

  "customRowAction": {
    "action": "executeFlow",
    "actionParams": "{\"id\": \"ここにGUIDを設定してください\"}"
  }

上記の箇所にGUIDを設定します。
GUIDは、Power Automate フローのURL /flows/以降の箇所の文字列が該当します。

image.png

こちらで設定したJSONから、Power Automateから選択したアイテムの場合トリガーが発火されます。

Power Automateフロー

詳しい情報はささみさんブログをみてください。

上記を参考に、選択した行の情報からメールの下書きを作成するフローを作成します。

固定メール📨で添付ファイルを使いまわすシーンが思いつかない(そういう業務は見直しません?)ということで添付ファイルは、この記事では触れません。

フロー 詳細

image.png

フロー完了後の画面にしているのは、なんとなくmanualって表示されるモダンの画面だと伝わりにくいな・・・という偏見からです

  1. [トリガー] 選択したアイテムの場合
  2. [アクション] 項目の取得 - Listsの行の値を取得
  3. [アクション] 選択 - 行の値から、Toのオブジェクトを作成
  4. [アクション] 選択 - 行の値から、Ccのオブジェクトを作成
  5. [アクション] 選択 - 行の値から、Bccのオブジェクトを作成
  6. [アクション] 作成 - JSONの作成
  7. [アクション] HTTP 要求を送信

作るものはOutlook 365コネクタで送信するHTTP 要求を送信アクションのBodyです。
ここをデータ操作で加工することがポイントになります。

Listsの設定は下記の通り

名前 種類 コメント
Flow 1行テキスト Power Automate起動用でBlank想定
Subject 1行テキスト メールのタイトル、必須列に設定
Body 複数行テキスト メール本文、リッチテキストではない仕様
To ユーザーまたはグループ 複数選択を許可
Cc ユーザーまたはグループ 複数選択を許可
Bcc ユーザーまたはグループ 複数選択を許可

ToCcBcc列が複数選択を許可されていることから、項目の取得アクションの戻り値が配列(Array)になります。ここを選択アクションでマッピングします。

選択 アクション - ほぼ共通

手っ取り早く、中身を紹介します。
ToCcBcc列ほとんど共通です。

image.png

コードビュー
{
  "type": "Select",
  "description": "toRecipientsの設定",
  "inputs": {
    "from": "@body('項目の取得')?['Person']",
    "select": {
      "emailAddress": {
        "name": "@item()?['DisplayName']",
        "address": "@item()?['Email']"
      }
    }
  },
  "runAfter": {
    "項目の取得": [
      "Succeeded"
    ]
  }
}

配列の戻り値が設定されるToCcBccFromに設定し、上記の形でマッピングします。

作成

選択を繰り返したあと、HTTP要求のボディを作成します。
ToCcBccの配列は、空配列でもHTTP要求の成否に影響しません。

image.png

コードビュー
{
  "type": "Compose",
  "inputs": {
    "subject": "@{body('項目の取得')?['Title']}",
    "body": {
      "contentType": "Text",
      "content": "@{body('項目の取得')?['Body']}"
    },
    "toRecipients": "@body('選択_toRecipients')",
    "ccRecipients": "@body('選択_ccRecipients')",
    "bccRecipients": "@body('選択_bccRecipients')"
  },
  "runAfter": {
    "選択_bccRecipients": [
      "Succeeded"
    ]
  }
}

HTTP 要求の送信でおわり

あとは、ブログを参考にHTTP要求を設定しておしまいです。

image.png

コードビュー
{
  "type": "OpenApiConnection",
  "inputs": {
    "parameters": {
      "Uri": "https://graph.microsoft.com/v1.0/me/messages",
      "Method": "POST",
      "Body": "@outputs('作成_メールJSON')",
      "ContentType": "application/json"
    },
    "host": {
      "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365",
      "connection": "shared_office365",
      "operationId": "HttpRequest"
    }
  },
  "runAfter": {
    "作成_メールJSON": [
      "Succeeded"
    ]
  }
}

おわりに

非常にお手軽ですね。
何かと似たようなメールを送信するシーンはあるので、活用してぼたんぽちー!で終わらせたいものです。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15