SharePoint サイトをモダンUIへ移行すると、よく耳にするのが「クラシックUIにあった通知機能を使いたい」という声です。しかし、モダンUIにはクラシック時代のような「標準の通知機能」が用意されていません。
そこで活躍するのが「Power Automate」です。クラシック通知の代わりとして、リストの変更を自動で検知し、メールで知らせる仕組みを簡単に構築できます。
本記事では、クラシックUIの通知に近い形で、Power Automate を使ったメール通知フローを作成する手順を紹介します。
目次
Power Automateとは?
Power Automate は、Microsoft 365 に含まれる自動化ツールで、「特定の条件が起きたら、決められた処理を実行する」というワークフローをノーコードで作成できます。
SharePoint リストの更新をトリガーにしてメールを送ったり、Teams に通知したり、ファイルを自動生成したりと、日常業務の“ちょっとした手間”を自動化するのに最適なサービスです。
Power Automateで作成した自動処理は「フロー」と呼ばれます。
▼フローは以下のように説明することができます。
↓
[サイトに参加しているメンバーの情報を取得して]
↓
[全員に通知メールを送信]
このように、上から順に、条件に合っているか確認しながら処理していきます。
前提条件・仕様
今回はこちらの条件で作成します。- [対象サイト]:
⇒ SharePoint Online モダンUIで作成したサイト(以降「サイトA」と呼びます) - [通知のタイミング]:
⇒ ニュースが新規投稿された時 - [通知方法]:
⇒ メール - [通知対象]:
⇒ サイトのメンバーとして参加しているユーザー全員
Power Automateでフローを新規作成する
まずは、Power Automateのホームを開き、「+作成」から空のフローを作成してみましょう。
①フロー名
フロー名を入力します。今回は「サイトA:お知らせ更新メール通知処理」としました。
②トリガーの選択
トリガーとは、フローを“動かし始めるきっかけ”となる動作のことです。SharePoint で使用する場合、以下のようなものが使用できます。
- 項目が作成されたとき(SharePoint)
⇒ニュースやリストの新規投稿をきっかけにフローが実行されます。 - スケジュール – 繰り返し(Power Automate)
⇒SharePoint の操作とは関係なく、毎朝10時など、指定した時刻に自動で実行されます。
今回は「ニュースが投稿したタイミング」で通知したいので、“項目が作成されたとき“というトリガーを使用します。トリガーを選択して、「作成」ボタンを押すと、フローが作成されます。
フローの解説
こちらがフローの編集画面です。
上から順に、このようにアクションが並んでいます。
- [SharePoint(トリガー)] 項目が作成されたとき
- [コントロール] 条件
- [SharePoint] SharePointにHTTP要求を送信します
- [コントロール] それぞれに適用する
- [コントロール] 条件
- [outlook] メールの送信(V2)
アクションは、画面の(+)ボタンから追加できます。
カード状になっている箇所(コネクタといいます)をクリックすると、各アクションの詳細情報が確認できます。設定内容を解説していきます。
(1)項目が作成されたとき
クリックして、トリガーの詳細情報を表示します。
この中の[サイトのアドレス]と[リスト名]を設定する必要があります。
| サイトのアドレス | フローを適用したいサイトを選択します。※1 |
|---|---|
| リスト名 | 「サイトのページ」と手入力します。※2 |
※1 Power Automateを操作しているアカウントでアクセス可能なサイトしか選択できません。画像内のxxxxの箇所は、テナントドメインになります。
※2 [リスト名]は、通常は選択したサイト内にあるリストが選べるフォームです。今回はニュースページを取得したいので手入力ですが、トリガー対象をリストにしたい場合はここで選択肢から必要なリストを選んで使用します。
サイトAを選択し、「サイトのページ」と入力しました。
これで、“サイトAでページが新規投稿された時に処理を開始する“という意味になりました。
(2)条件(ニュースかどうか)
(1)で入力した Site Pages は、全てのページが対象となるため、ニュース以外のページは除外します。メールを送信する条件を絞っていきましょう。
条件とは
[条件]は、真偽を確かめるコネクタです。設定した条件に合致すれば真(True)、合致しなければ偽(False)として、条件を分岐して処理を進めることができます。詳細情報を表示し、2つの条件を「かつ」で追加します。「かつ」に設定すると、複数の条件が両方とも真になった場合のみtrueのルートに進みます。
◆ニュースかどうかを判定
ニュース以外のページは除外する条件です。| 左側のフィールド ※3 | triggerBody()?[‘PromotedState’] |
|---|---|
| 演算子 | 等しい |
| 右側のフィールド | 2 |
コピー用:
|
1 |
triggerBody()?['PromotedState'] |
SharePoint のニュースは、内部的には「サイトページライブラリ(Site Pages)」に保存されており、ニュースとして投稿されたページは “PromotedState” というプロパティに 2 が入っています。
そのため、この値が 2 かどうかを判定することで、対象のページがニュースかどうかを判断できます。
以降の処理は、True 以下に繋げていきましょう。
条件の精査が済んだら、サイトに参加しているメンバーの情報を取得しましょう。
[SharePointにHTTP要求を送信します]というコネクタを使用します。※4
コネクタをクリックして、詳細情報を設定していきます。
| サイトのアドレス | メンバーの情報を取得したいサイトのアドレスを指定します。 通常はトリガーと同じサイトを設定すると思います。 |
|---|---|
| 方法 | GET |
| URI | /_api/web/siteusers |
URIの値は、以下のように手入力します。
これを入力すると、そのサイトに参加しているユーザー情報を一覧で取得できます。
|
1 |
/_api/web/siteusers |
※4 SharePoint の標準コネクタには「サイトのメンバー一覧を取得する」アクションが存在しないため、REST API を使ってメンバー情報を取得します。
コネクタ名を変更する ※重要
詳細情報のウィンドウの左上、コネクタ名をクリックすると、編集することができます。次項で取得した情報を操作するのにここのコネクタ名を記載する必要があるのですが、半角スペースが含まれていると操作に失敗することがあります。
そのため、コネクタ名から全ての半角スペースを取り除きましょう。※5
(4)それぞれに適用する
(3)で取得したユーザー情報は集合になっていて、複数のユーザー情報が含まれます。
この状態のデータ全てを一括で操作することはできないので、「それぞれに適用する」コネクタを使って、データを分解し、データひとつひとつに処理をします。
コネクタをクリックして、詳細情報を設定します。
|
1 |
body('SharePointにHTTP要求を送信します')?['d']?['results'] |
この記述で、(3)で取得したデータを分解して、操作できるようにしています。
(5)条件(メールアドレスが登録されているかどうか)
(4)で分解したデータは、期待する形式以外の情報が飛んでくることがあるため、「メールアドレスが含まれているかどうか」で正しい人の情報かどうか判定します。(メンバー以外のグループの情報だったりします)
メールアドレスの情報が無いデータでメールを送信しようとすると、エラーが出てフローが中途半端に停止してしまうことがあります。
| 左側のフィールド | empty(items(‘それぞれに適用する’)?[‘Email’]) |
|---|---|
| 演算子 | 等しい |
| 右側のフィールド | false |
コピー用:
|
1 |
empty(items('それぞれに適用する')?['Email']) |
この条件式で、”メールアドレスがない状態”が”偽”の時、すなわち”メールアドレスがある時”には、Trueのルートを通るようになります。
以降のフローはTrueに繋げます。
(6)フローのテスト 1回目
メールの処理を入れてからテストを実行すると、実際のメンバー全員にテストメールが届いてしまう可能性があります。それを回避するため、ここまでできたら保存し、フローをテストしてみましょう。
[テスト]ボタンを押し、手動テストを選択します。
テストが始まったら、この状態でタブを開いたまま、別タブを起動し、(1)の手順で設定したサイトで実際にテスト投稿をしてみましょう。
正しく設定できていれば、テストが動作しテスト結果が表示されます。(トリガーが走るまで数分のラグがあります)
各コネクタを選択するとテスト結果が表示されるので、詳しく見てみましょう。
長いコードですが、これらは(3)で取得したユーザー情報です。
この中に、メンバーのメールアドレスや氏名が表示されていれば、データが正しく取得できています。
「それぞれに適用する」の下部に左右矢印があるので、次のデータへページを送っていくと、処理が走った全員分のデータが確認できます。
ここでもしどこか間違っていたり、エラーが表示されるようであれば、Copilot や Chat GPT などのAIに聞いてみるのがおすすめです。エラーの内容は環境にも大きく左右されますが、適格なアドバイスが得られることを願います。
(7)メールの送信(V2)
ここまでできたら最後に、メールを送信しましょう。送信先
(5)で分解したメールアドレスを使用します。下記の内容を入力します。
|
1 |
item()?['Email'] |
件名
単行で自由に設定できます。「サイトAのお知らせに更新がありました」などの分かりやすい内容が良いと思います。
メール本文
メールの本文はテキストエディターになっていて、メンバーの氏名を動的に表示したり、リンクを貼ったりすることができます。宛先の氏名入れる場合は以下を式として挿入:
|
1 |
item()?['Title'] |
件名や本文にお知らせの内容を入れる場合は、雷アイコンのボタンを押すと、投稿内容を選択することができます。
(8)最終テスト
メールの設定が出来たら、再度テストをおこないましょう。※テストをおこなう前は、事前にメールが届くメンバーに一声かけておき、テストだと分かる文面で送信しましょう。



