Outlookの連絡先リスト
Outlookに連絡先リストという機能が存在します。
Outlookのバージョンによっては、リスト
ではなくフォルダ
と表現されていることもあり、若干困惑します。
Outlook (new) においては、連絡先リスト
と表現されているようです。
予め定義していた複数の連絡先に対し、一括でメールの作成・送信ができる便利な機能です。
特にルーティンワークでは時短術として活用できるかもしれません。
一方で「特定のアカウントで設定した連絡先リスト
を同じ部署の社員に共有する」となると手間が発生します。
引継ぎのタイミングで課題になるでしょう。
今回は、この連絡先リスト
の機能を疑似的にSharePoint Lists
で再現し、チームで再利用できる仕組みを再現していきたいと思います。
用意するLists
連絡先リスト
の機能を再現するために、二つのSharePoint Lists
を用意します。
リスト表示名 | リスト名 | 概要 |
---|---|---|
グループ | Country | グループ化するための一意のリスト |
連絡先一覧 | ContactInfo | 連絡先を列挙した一覧 |
それぞれ内容は下記の通りです。
■ グループ
列名 | 列のタイプ | 詳細 |
---|---|---|
Country | 1 行テキスト | グループ化する切り口 |
Flag | ハイパーリンクまたは画像 | 国旗の画像(いらすとや) |
Flow | 1 行テキスト | Power Automate起動用の空の列 |
■ 連絡先一覧
列名 | 列のタイプ | 詳細 |
---|---|---|
1 行テキスト | メールアドレス | |
Phone Number | 1 行テキスト | 電話番号 |
Name | 1 行テキスト | 名前 |
Company | 1 行テキスト | 会社名 |
Address | 1 行テキスト | 住所 |
Country | 参照 | グループ化の指標、リスト グループ を参照 |
連絡先一覧
が、Outlookの中の連絡先
に該当します。
連絡先リスト
として用いるフラグは参照列であるCountry
です。連絡先リスト
の名前
に該当します。
画像のビューでは、グループ化のキーとして利用しています。
そしてグループ
と連絡先一覧
は、参照列
を用いて下記のようにリレーションを持っています。
参照列
を用いる利点は、グループ化の指標を他のリストで設定し、管理が統一されることです。
明示的に紐づいていることで、Power Automateから子リストである連絡先一覧
の項目を取得する際に、リレーションが確立された項目として抽出する際にも役立ちます。
連絡先一覧はダミーデータです。
合計50件、ChatGPTで作成しています。
疑似連絡先リストとして活用する by Power Automate
前置きが長くなりましたが、ここまではあくまで準備です。
一括でメールの送信先として利用するため、Power Automate クラウドフローを作成します。
流れは下記のようになります。
- トリガー -
SharePoint
選択したアイテムの場合
-
SharePoint
- 複数の項目の取得 -
選択
- 後述のアクションのために、送信先をJSONとして加工 -
作成
- メール本文を設定 -
Outlook 365
- HTTP 要求を送信(下書きの作成)
シナリオとして、SharePoint Listsグループ
において、選択されたグループのレコードで、クラウドフローを実施、参照列で選択されたレコードに紐づく連絡先に対し、送信するメールの下書きを作成する流れです。
各ステップの詳細
1. SharePoint
選択したアイテムの場合
SharePoint Listsはグループ
を設定します。
送信する対象である連絡先リスト
に位置します。
2. SharePoint
- 複数の項目の取得
フィルター クエリ
を活用して、選択したレコード
とリレーションを持つ項目のみ取得します。
Country/Id eq @{triggerBody()?['entity']['ID']}
子テーブルに該当する連絡先一覧
の参照列には、参照先のレコードのId
を含め複数の値を持ち、フィルタークエリに用いることができます。
Id
は確実に一意であり、参照先と参照元で一致するため、有効に作用します。
以後はデータ操作
で、HTTP要求のために値を加工していく処理です。
3. 選択
後続のHTTP要求のため、emailAddress
にname
、address
を含むオブジェクトを作成します。
- From:
outputs('複数の項目の取得')?['body/value']
{
"emailAddress": {
"name": "@{item()?['Name']}",
"address": "@{item()?['Title']}"
}
}
こちらで、SharePoint Lists 連絡先一覧のタイトル列に指定しているな、と察する方がいらっしゃると思います。
コチラはSharePoint Listsの連絡先一覧
とOutlookの連絡先
を同期するような操作に活用できたりするため、このように設定しております。
4. 作成
ずぼらな性格なので、メールの文章を設定しています。
この設定方法は好みの問題です。
5. Outlook 365
- HTTP 要求を送信(下書きの作成)
Outlook 365コネクタでHTTP 要求を送信し、メールの下書きを作成します。
ささみ先生のブログが参考になります。
この技、個人的に重宝しています。
メールを送る前になんとなく確認を挟みたい・・・なぞの心理ですね。
メソッド : POST
https://graph.microsoft.com/v1.0/me/messages
bodyの肝の部分は(3)の選択アクションです。
toRecipients
に設定されているため、To
に宛先が設定されますが、用途に応じてCc
にもBcc
にも設定できます。
{
"subject": "@{triggerBody()?['entity']['fileName']}向け 資料の送信",
"body": {
"contentType": "Text",
"content": "@{outputs('作成')}"
},
"toRecipients": @{body('選択')}
}
詳しくはささみ先生のブログをご覧くださいませ。
いざ実行
コチラを実行することによって、SharePoint Listsから疑似的な連絡先リストの機能を再現できます。
サクっとメールの下書きが作成できました。
国旗はいらすとやの作品を参照させていただいています。
細かいテクニックですが、業務の標準化という観点で使えるシーンがあれば嬉しいです。
添付ファイルにも対応したい
メールを作成できるのであれば添付ファイルも設定したい
こんなニーズも出てくるかと思います。
複数のグループに対して送る場合は、Power Apps
によるテクニックがありますが、選択したグループに対してのみ添付ファイル付きメールを作成するシナリオの場合、少しの工夫で機能を実現できます。
- SharePoint コネクタ - 添付ファイルを取得する
- SharePoint コネクタ - 添付ファイルのコンテンツを取得
-
Outlook 365
- HTTP 要求を送信(添付ファイルの追加)
添付ファイルを追加するためのHTTP 要求
の詳細は下記のとおりです。
https://graph.microsoft.com/v1.0/me/messages/@{body('HTTP_要求を送信します_下書きの作成')?['id']}/attachments
メソッド : POST
{
"@odata.type": "#microsoft.graph.fileAttachment",
"name": "@{item()?['DisplayName']}",
"contentBytes": "@{base64(body('添付ファイルのコンテンツの取得'))}"
}
添付ファイル コンテンツはbinary型ですので、base64 関数を用いて変換します。
これで準備が整いました。
実践
添付ファイルをレコードに設定してみましょう。
先ほど同様にPower Automateを起動すると、じゃじゃん。
上手い具合にメールが作成できました。
チョットした工夫で色々できそうですね。