0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SharePoint Listsを連絡帳のように使い、特定の対象に送信するメールを作成してみる

Posted at

Outlookの連絡先リスト

Outlookに連絡先リストという機能が存在します。

image.png

Outlookのバージョンによっては、リストではなくフォルダと表現されていることもあり、若干困惑します。
Outlook (new) においては、連絡先リストと表現されているようです。

予め定義していた複数の連絡先に対し、一括でメールの作成・送信ができる便利な機能です。
特にルーティンワークでは時短術として活用できるかもしれません。

一方で「特定のアカウントで設定した連絡先リストを同じ部署の社員に共有する」となると手間が発生します。
引継ぎのタイミングで課題になるでしょう。

今回は、この連絡先リストの機能を疑似的にSharePoint Listsで再現し、チームで再利用できる仕組みを再現していきたいと思います。

image.png

用意するLists

連絡先リストの機能を再現するために、二つのSharePoint Listsを用意します。

リスト表示名 リスト名 概要
グループ Country グループ化するための一意のリスト
連絡先一覧 ContactInfo 連絡先を列挙した一覧

それぞれ内容は下記の通りです。

■ グループ

列名 列のタイプ 詳細
Country 1 行テキスト グループ化する切り口
Flag ハイパーリンクまたは画像 国旗の画像(いらすとや)
Flow 1 行テキスト Power Automate起動用の空の列

image.png

■ 連絡先一覧

列名 列のタイプ 詳細
Email 1 行テキスト メールアドレス
Phone Number 1 行テキスト 電話番号
Name 1 行テキスト 名前
Company 1 行テキスト 会社名
Address 1 行テキスト 住所
Country 参照 グループ化の指標、リスト グループ を参照

image.png

連絡先一覧が、Outlookの中の連絡先に該当します。
連絡先リストとして用いるフラグは参照列であるCountryです。連絡先リスト名前に該当します。
画像のビューでは、グループ化のキーとして利用しています。

そしてグループ連絡先一覧は、参照列を用いて下記のようにリレーションを持っています。

参照列を用いる利点は、グループ化の指標を他のリストで設定し、管理が統一されることです。
明示的に紐づいていることで、Power Automateから子リストである連絡先一覧の項目を取得する際に、リレーションが確立された項目として抽出する際にも役立ちます。

連絡先一覧はダミーデータです。
合計50件、ChatGPTで作成しています。

疑似連絡先リストとして活用する by Power Automate

前置きが長くなりましたが、ここまではあくまで準備です。
一括でメールの送信先として利用するため、Power Automate クラウドフローを作成します。

image.png

流れは下記のようになります。

  1. トリガー - SharePoint 選択したアイテムの場合
  2. SharePoint - 複数の項目の取得
  3. 選択 - 後述のアクションのために、送信先をJSONとして加工
  4. 作成 - メール本文を設定
  5. Outlook 365 - HTTP 要求を送信(下書きの作成)

シナリオとして、SharePoint Listsグループにおいて、選択されたグループのレコードで、クラウドフローを実施、参照列で選択されたレコードに紐づく連絡先に対し、送信するメールの下書きを作成する流れです。

各ステップの詳細

1. SharePoint 選択したアイテムの場合

image.png

SharePoint Listsグループを設定します。
送信する対象である連絡先リストに位置します。

2. SharePoint - 複数の項目の取得

フィルター クエリを活用して、選択したレコードとリレーションを持つ項目のみ取得します。

image.png

フィルター クエリ
Country/Id eq @{triggerBody()?['entity']['ID']}

子テーブルに該当する連絡先一覧の参照列には、参照先のレコードのIdを含め複数の値を持ち、フィルタークエリに用いることができます。
Idは確実に一意であり、参照先と参照元で一致するため、有効に作用します。

以後はデータ操作で、HTTP要求のために値を加工していく処理です。

3. 選択
後続のHTTP要求のため、emailAddressnameaddressを含むオブジェクトを作成します。

image.png

  • From: outputs('複数の項目の取得')?['body/value']
Map
{
  "emailAddress": {
    "name": "@{item()?['Name']}",
    "address": "@{item()?['Title']}"
  }
}

こちらで、SharePoint Lists 連絡先一覧のタイトル列に指定しているな、と察する方がいらっしゃると思います。
コチラはSharePoint Listsの連絡先一覧とOutlookの連絡先を同期するような操作に活用できたりするため、このように設定しております。

4. 作成
ずぼらな性格なので、メールの文章を設定しています。
この設定方法は好みの問題です。

image.png

5. Outlook 365 - HTTP 要求を送信(下書きの作成)
Outlook 365コネクタでHTTP 要求を送信し、メールの下書きを作成します。
ささみ先生のブログが参考になります。

この技、個人的に重宝しています。
メールを送る前になんとなく確認を挟みたい・・・なぞの心理ですね。

image.png

メソッド : POST

URI
https://graph.microsoft.com/v1.0/me/messages

bodyの肝の部分は(3)の選択アクションです。
toRecipientsに設定されているため、Toに宛先が設定されますが、用途に応じてCcにもBccにも設定できます。

body
{
    "subject": "@{triggerBody()?['entity']['fileName']}向け 資料の送信",
    "body": {
        "contentType": "Text",
        "content": "@{outputs('作成')}"
    },
    "toRecipients": @{body('選択')}
}

詳しくはささみ先生のブログをご覧くださいませ。

いざ実行

コチラを実行することによって、SharePoint Listsから疑似的な連絡先リストの機能を再現できます。

image.png

サクっとメールの下書きが作成できました。

image.png

国旗はいらすとやの作品を参照させていただいています。

細かいテクニックですが、業務の標準化という観点で使えるシーンがあれば嬉しいです。

添付ファイルにも対応したい

メールを作成できるのであれば添付ファイルも設定したい

こんなニーズも出てくるかと思います。
複数のグループに対して送る場合は、Power Appsによるテクニックがありますが、選択したグループに対してのみ添付ファイル付きメールを作成するシナリオの場合、少しの工夫で機能を実現できます。

image.png

  1. SharePoint コネクタ - 添付ファイルを取得する
    • 選択した項目のIDから添付ファイルを取得
      image.png
  2. SharePoint コネクタ - 添付ファイルのコンテンツを取得
  3. Outlook 365 - HTTP 要求を送信(添付ファイルの追加)
    image.png

添付ファイルを追加するためのHTTP 要求の詳細は下記のとおりです。

URI
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 関数を用いて変換します。

これで準備が整いました。

実践

添付ファイルをレコードに設定してみましょう。

スクリーンショット 2024-10-26 122938.png

先ほど同様にPower Automateを起動すると、じゃじゃん。

image.png

上手い具合にメールが作成できました。
チョットした工夫で色々できそうですね。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?