🛸
Power Automate リストを活用してメール送信の承認を行う
メールの作成にリストを使う方法
リストの承認機能を使ってみました。
メールの作成には、以下の方法を試しました。
- リストのフォームから
- PAD から
リストの作成
テンプレートから作る場合
テンプレートから始めるとリマインダーを簡単に追加できます。
作業の進捗追跡を選ぶとこんな感じ。
作業項目 | 説明 | カテゴリ | 進行状況 | 優先度 | 開始日 | 期限 | 担当 | メモ |
---|---|---|---|---|---|---|---|---|
項目名が最初から日本語で作成されますが、PAD でプロパティを確認すると
内部列名は英語になっているのでこのまま使っても問題なさそうに思います。
一から作る場合
一から作る場合は、項目名を英語で追加してから日本語に変更するのをおすすめ。
以下の記事で日本語で列名を作成したときのPAフローのイメージがつかめます。
自動化しないなら内部名について気にしなくても良いのですが、
自動化したいので英語で作ります。
Subject | Body | TO | CC | Boss |
---|---|---|---|---|
事前準備
リストの設定
リストに承認要求の設定をすることで、色々便利な機能が使えるようになります。
- 送信されたアイテムに対してコンテンツの承認を必須にする
設定 > バージョン設定 > コンテンツの承認送信されたアイテムに対してコンテンツの承認を必須にする
→ はい
これを有効に設定。
ついでに項目名を日本語に変更します。
件名 | 本文 | TO | CC | 上長 | 承認の状況 |
---|---|---|---|---|---|
入力フォーム
承認待ち。
リストを作成したときに入る ModerationStatus(承認の状態)の既定値はPending
です。
PA のトリガーに設定するときは、このPending
を使うと良いです。
トリガーの条件
@equals(triggerBody()?['{ModerationStatus}'],'Pending')
承認後は Approved。
{ModerationStatus}: 承認の状況
{ModerationComment}: 承認者のコメント
- 専用の承認アクションも使えます。
- 普通の列を承認に使う場合は「項目の更新」アクションで更新します。
- 承認の設定を行っている場合は「コンテンツの承認状態を設定します」で更新します。
PA で使う場合はこんな感じ。
PAD のアクションにもあります。
フローの作成
アイテムの承認とメールの送信は、別フローに分けた方が使い勝手が良くなると思います。
新しいアイテムが追加されたときに承認を開始する
このテンプレートを使用しました。
トリガーの条件
@equals(triggerBody()?['{ModerationStatus}'],'Pending')
アイテムが承認されたときにメールを送信する
トリガーの条件
@equals(triggerBody()?['{ModerationStatus}'],'Approved')
変数を初期化する
- Name:
attachmentFiles
- Type:
Array
条件
@triggerBody()?['{HasAttachments}'] is equals to true
添付ファイルの取得
- ID:
@triggerBody()?['ID']
それぞれに適用する
- foreach:
@body('添付ファイルの取得')
添付ファイルのコンテンツの取得
- itemId:
@triggerBody()?['ID']
- attachmentId:
@items('それぞれに適用する')?['Id']
配列変数に追加
value
{
"name": "@items('それぞれに適用する')?['DisplayName']",
"contentBytes": "@body('添付ファイルのコンテンツの取得')"
}
コード ビュー
{
"type": "If",
"expression": {
"and": [
{
"equals": ["@triggerBody()?['{HasAttachments}']", true]
}
]
},
"actions": {
"添付ファイルの取得": {
"type": "OpenApiConnection",
"inputs": {
"parameters": {
"dataset": "https://○○.sharepoint.com/sites/○○",
"table": "",
"itemId": "@triggerBody()?['ID']"
},
"host": {
"apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
"connection": "shared_sharepointonline",
"operationId": "GetItemAttachments"
}
}
},
"それぞれに適用する": {
"type": "Foreach",
"foreach": "@body('添付ファイルの取得')",
"actions": {
"添付ファイルのコンテンツの取得": {
"type": "OpenApiConnection",
"inputs": {
"parameters": {
"dataset": "https://○○.sharepoint.com/sites/○○",
"table": "",
"itemId": "@triggerBody()?['ID']",
"attachmentId": "@items('それぞれに適用する')?['Id']"
},
"host": {
"apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
"connection": "shared_sharepointonline",
"operationId": "GetAttachmentContent"
}
}
},
"配列変数に追加": {
"type": "AppendToArrayVariable",
"inputs": {
"name": "attachmentFiles",
"value": {
"name": "@items('それぞれに適用する')?['DisplayName']",
"contentBytes": "@body('添付ファイルのコンテンツの取得')"
}
},
"runAfter": {
"添付ファイルのコンテンツの取得": ["Succeeded"]
}
}
},
"runAfter": {
"添付ファイルの取得": ["Succeeded"]
}
}
},
"else": {
"actions": {}
},
"runAfter": {
"変数を初期化する": ["Succeeded"]
}
}
メールの送信 (V2)
- To:
@triggerBody()?['TO']
- Subject:
@triggerBody()?['Title']
- Body:
@{triggerBody()?['Body']}
- Cc:
@triggerBody()?['CC']
- Attachments:
@variables('attachmentFiles')
コード ビュー
{
"type": "OpenApiConnection",
"inputs": {
"parameters": {
"emailMessage/To": "@triggerBody()?['TO']",
"emailMessage/Subject": "@triggerBody()?['Title']",
"emailMessage/Body": "<p>@{triggerBody()?['Body']}</p>",
"emailMessage/Cc": "@triggerBody()?['CC']",
"emailMessage/Attachments": "@variables('attachmentFiles')",
"emailMessage/Importance": "Normal"
},
"host": {
"apiId": "/providers/Microsoft.PowerApps/apis/shared_office365",
"connection": "shared_office365",
"operationId": "SendEmailV2"
}
},
"runAfter": {
"条件": ["Succeeded"]
}
}
Discussion