Web制作、Webサービスに関する技術やノウハウを発信するコラムサイト

SharePoint クラシックUIの通知機能をPower Automateで再現する

  • このエントリーをはてなブックマークに追加

SharePoint サイトをモダンUIへ移行すると、よく耳にするのが「クラシックUIにあった通知機能を使いたい」という声です。しかし、モダンUIにはクラシック時代のような「標準の通知機能」が用意されていません。

そこで活躍するのが「Power Automate」です。クラシック通知の代わりとして、リストの変更を自動で検知し、メールで知らせる仕組みを簡単に構築できます。

本記事では、クラシックUIの通知に近い形で、Power Automate を使ったメール通知フローを作成する手順を紹介します。

Power Automateとは?


Power Automate は、Microsoft 365 に含まれる自動化ツールで、「特定の条件が起きたら、決められた処理を実行する」というワークフローをノーコードで作成できます。
SharePoint リストの更新をトリガーにしてメールを送ったり、Teams に通知したり、ファイルを自動生成したりと、日常業務の“ちょっとした手間”を自動化するのに最適なサービスです。

Power Automateで作成した自動処理は「フロー」と呼ばれます。

▼フローは以下のように説明することができます。
[指定したShare Pointサイトのニュースが更新された時]

[サイトに参加しているメンバーの情報を取得して]

[全員に通知メールを送信]

このように、上から順に、条件に合っているか確認しながら処理していきます。

前提条件・仕様

今回はこちらの条件で作成します。
  • [対象サイト]:
    ⇒ SharePoint Online モダンUIで作成したサイト(以降「サイトA」と呼びます)
  • [通知のタイミング]:
    ⇒ ニュースが新規投稿された時
  • [通知方法]:
    ⇒ メール
  • [通知対象]:
    ⇒ サイトのメンバーとして参加しているユーザー全員

Power Automateでフローを新規作成する

まずは、Power Automateのホームを開き、「+作成」から空のフローを作成してみましょう。


「自動化したクラウドフロー」を選択するとスタートメニューが表示されます。


①フロー名

フロー名を入力します。
今回は「サイトA:お知らせ更新メール通知処理」としました。

②トリガーの選択

トリガーとは、フローを“動かし始めるきっかけ”となる動作のことです。
SharePoint で使用する場合、以下のようなものが使用できます。
  • 項目が作成されたとき(SharePoint)
    ⇒ニュースやリストの新規投稿をきっかけにフローが実行されます。
  • スケジュール – 繰り返し(Power Automate)
    ⇒SharePoint の操作とは関係なく、毎朝10時など、指定した時刻に自動で実行されます。

今回は「ニュースが投稿したタイミング」で通知したいので、“項目が作成されたとき“というトリガーを使用します。トリガーを選択して、「作成」ボタンを押すと、フローが作成されます。

フローの解説

こちらがフローの編集画面です。


上から順に、このようにアクションが並んでいます。

  1. [SharePoint(トリガー)] 項目が作成されたとき
  2. [コントロール] 条件
  3. [SharePoint] SharePointにHTTP要求を送信します
  4. [コントロール] それぞれに適用する
  5. [コントロール] 条件
  6. [outlook] メールの送信(V2)

アクションは、画面の(+)ボタンから追加できます。


カード状になっている箇所(コネクタといいます)をクリックすると、各アクションの詳細情報が確認できます。設定内容を解説していきます。

(1)項目が作成されたとき


クリックして、トリガーの詳細情報を表示します。
この中の[サイトのアドレス]と[リスト名]を設定する必要があります。

サイトのアドレス フローを適用したいサイトを選択します。※1
リスト名 「サイトのページ」と手入力します。※2

※1 Power Automateを操作しているアカウントでアクセス可能なサイトしか選択できません。画像内のxxxxの箇所は、テナントドメインになります。
※2 [リスト名]は、通常は選択したサイト内にあるリストが選べるフォームです。今回はニュースページを取得したいので手入力ですが、トリガー対象をリストにしたい場合はここで選択肢から必要なリストを選んで使用します。



サイトAを選択し、「サイトのページ」と入力しました。
これで、“サイトAでページが新規投稿された時に処理を開始する“という意味になりました。

(2)条件(ニュースかどうか)

(1)で入力した Site Pages は、全てのページが対象となるため、ニュース以外のページは除外します。
メールを送信する条件を絞っていきましょう。


条件とは

[条件]は、真偽を確かめるコネクタです。設定した条件に合致すれば真(True)、合致しなければ偽(False)として、条件を分岐して処理を進めることができます。
詳細情報を表示し、2つの条件を「かつ」で追加します。「かつ」に設定すると、複数の条件が両方とも真になった場合のみtrueのルートに進みます。

◆ニュースかどうかを判定
ニュース以外のページは除外する条件です。

左側のフィールド ※3 triggerBody()?[‘PromotedState’]
演算子 等しい
右側のフィールド 2
※3 左側のフィールドは、そのまま入力すると正しく動きません。フィールドにフォーカスすると、2つのボタンが表示されるので、そのうちの[fx]を押すと式が入力できるようになります。


コピー用:

SharePoint のニュースは、内部的には「サイトページライブラリ(Site Pages)」に保存されており、ニュースとして投稿されたページは “PromotedState” というプロパティに 2 が入っています。
そのため、この値が 2 かどうかを判定することで、対象のページがニュースかどうかを判断できます。


以降の処理は、True 以下に繋げていきましょう。

(3)SharePointにHTTP要求を送信します


条件の精査が済んだら、サイトに参加しているメンバーの情報を取得しましょう。
[SharePointにHTTP要求を送信します]というコネクタを使用します。※4

コネクタをクリックして、詳細情報を設定していきます。
サイトのアドレス メンバーの情報を取得したいサイトのアドレスを指定します。
通常はトリガーと同じサイトを設定すると思います。
方法 GET
URI /_api/web/siteusers

URIの値は、以下のように手入力します。
これを入力すると、そのサイトに参加しているユーザー情報を一覧で取得できます。


※4 SharePoint の標準コネクタには「サイトのメンバー一覧を取得する」アクションが存在しないため、REST API を使ってメンバー情報を取得します。

コネクタ名を変更する ※重要

詳細情報のウィンドウの左上、コネクタ名をクリックすると、編集することができます。
次項で取得した情報を操作するのにここのコネクタ名を記載する必要があるのですが、半角スペースが含まれていると操作に失敗することがあります。
そのため、コネクタ名から全ての半角スペースを取り除きましょう。※5
※5 思い切ってコネクタ名を変更しても大丈夫です。事項でコネクタ名を記載するので、そこの名称を新しいコネクタ名にして対応してください。

(4)それぞれに適用する


(3)で取得したユーザー情報は集合になっていて、複数のユーザー情報が含まれます。
この状態のデータ全てを一括で操作することはできないので、「それぞれに適用する」コネクタを使って、データを分解し、データひとつひとつに処理をします。

コネクタをクリックして、詳細情報を設定します。


この記述で、(3)で取得したデータを分解して、操作できるようにしています。

(5)条件(メールアドレスが登録されているかどうか)


(4)で分解したデータは、期待する形式以外の情報が飛んでくることがあるため、「メールアドレスが含まれているかどうか」で正しい人の情報かどうか判定します。(メンバー以外のグループの情報だったりします)
メールアドレスの情報が無いデータでメールを送信しようとすると、エラーが出てフローが中途半端に停止してしまうことがあります。

左側のフィールド empty(items(‘それぞれに適用する’)?[‘Email’])
演算子 等しい
右側のフィールド false

コピー用:


この条件式で、”メールアドレスがない状態”が”偽”の時、すなわち”メールアドレスがある時”には、Trueのルートを通るようになります。
以降のフローはTrueに繋げます。

(6)フローのテスト 1回目

メールの処理を入れてからテストを実行すると、実際のメンバー全員にテストメールが届いてしまう可能性があります。それを回避するため、ここまでできたら保存し、フローをテストしてみましょう。


[テスト]ボタンを押し、手動テストを選択します。
テストが始まったら、この状態でタブを開いたまま、別タブを起動し、(1)の手順で設定したサイトで実際にテスト投稿をしてみましょう。


正しく設定できていれば、テストが動作しテスト結果が表示されます。(トリガーが走るまで数分のラグがあります)

各コネクタを選択するとテスト結果が表示されるので、詳しく見てみましょう。


長いコードですが、これらは(3)で取得したユーザー情報です。
この中に、メンバーのメールアドレスや氏名が表示されていれば、データが正しく取得できています。
「それぞれに適用する」の下部に左右矢印があるので、次のデータへページを送っていくと、処理が走った全員分のデータが確認できます。


ここでもしどこか間違っていたり、エラーが表示されるようであれば、Copilot や Chat GPT などのAIに聞いてみるのがおすすめです。エラーの内容は環境にも大きく左右されますが、適格なアドバイスが得られることを願います。


(7)メールの送信(V2)

ここまでできたら最後に、メールを送信しましょう。

送信先
(5)で分解したメールアドレスを使用します。
下記の内容を入力します。


件名
単行で自由に設定できます。
「サイトAのお知らせに更新がありました」などの分かりやすい内容が良いと思います。

メール本文
メールの本文はテキストエディターになっていて、メンバーの氏名を動的に表示したり、リンクを貼ったりすることができます。

宛先の氏名入れる場合は以下を式として挿入:


投稿の内容を挿入する
件名や本文にお知らせの内容を入れる場合は、雷アイコンのボタンを押すと、投稿内容を選択することができます。


(8)最終テスト

メールの設定が出来たら、再度テストをおこないましょう。
※テストをおこなう前は、事前にメールが届くメンバーに一声かけておき、テストだと分かる文面で送信しましょう。



執筆者:森島 [ WEBデザイナー ]

8bit デザイナーです。 デザイン・マークアップ・映像制作など幅広く担当しています。

関連記事

Webサイト制作

制作会社が考える、WordPressとオリジナルCMSの選定ポイント

弊社では「WordPress」を使った制作と、弊社のオリジナルCMSツール「ProG(プログ)」を使った制作の、いずれについても多くのご相談をいただいています。 それぞれにメリットがある一方で、運用時に気を付けるべき点もあり、サイトの目的や運用方法によって向き・不向きがあります。 この記事ではそれぞれの特徴を整理しながら、WordPressとオリジナルCMSを併用できるケースについてもご紹介します! 目次1 WordPressを使用するメリット1.1 多機能で自由度が高い1. […]

WordPress

本当に使う機能だけを残した、シンプルなWordPressのSEOプラグインを作成しました

WordPressでSEO周りの設定が簡単にできる、SEOプラグイン。 SEO対策には便利ですが、設定項目が多すぎて「どこを触ればいいのか分からない」と感じることはないでしょうか? そこで今回、社内の案件用にシンプルなSEOプラグインを作成してみました。 『最低限の設定のみでシンプルに』というのが今回のテーマです。 今回の記事では「どんな考え方で設計したのか」といった、制作背景などを紹介していきます。 ※本記事ではコードの全公開やダウンロードは行いません 追記:無事リリースで […]

プログラミング

SharePoint CSSとJSを入力できるWEBパーツを作る(モダンUI向け・SPFx)

SharePointのモダンUIで、SharePoint Framework(以降SPFx)という技術を使用し、CSSとJSを入力できる独自WEBパーツを作ります。 旧来のクラシックUIではスクリプトエディターと呼ばれていたWEBパーツを再現します。 目次1 前提条件2 WEBパーツの作成手順3 1.環境構築4 2.SPFxプロジェクトを作成4.1 VSCodeでフォルダを開く4.2 ターミナルを開いてコマンドを入力4.3 質問1:プロジェクトの名前を入力4.4 質問24.5 […]

株式会社8bit (エイトビット)

東京都目黒区でWebサイト制作、Webシステム開発などを行っております。
コーポレートサイトやWebサービスの企画・提案を得意としており、自社での経験を元にアイデアをカタチにするお手伝いをさせていただいております。

Web制作に関するご相談はお気軽にどうぞ

弊社に制作をご依頼いただく際の費用感をご確認いただける、
見積りシミュレーションをご用意いたしました。