はじめに
Microsoft FormsとSharePoint Onlineリスト、Power Automateを組み合わせることで、簡易的な予約システムを作成することができます。
今回は、同じ日に予約できる枠を先着3名までとし、4名以上から申請があった場合、自動で予約受付不可メールを送るシナリオをサンプルにご紹介します!
フロー全体図
用意するもの
SharePoint Onlineリスト
任意のサイトで新規のリストを作成します。
Formsの回答を格納し、カレンダー表示させるためにSharePoint Onlineリストを利用します。
「列の追加」から「日付と時刻」の列を作成します。
私は列名を「Date」にして「保存」をクリックしました。
※「時間を含める」は必ず「いいえ」にしてください。
右上の「すべてのアイテム」から「新しいビューを作成する」をクリックします。
ビューの作成画面が表示されるので、以下を設定し「作成」をクリックします。
ビュー名:任意の名前
表示方法:カレンダー
予定の開始日:Date
予定の終了日:Date
リストの表示形式がカレンダーに変わりました。
以上で準備は完了です。
フローの作成手順
2.応答の詳細を取得する
「+新しいステップ」からMicrosoft Formsの「応答の詳細を取得する」アクションを選択し、以下を指定します。
フォームID:事前に作成したアンケート
応答ID:動的なコンテンツの追加から「新しい応答が送信されるとき」の「応答ID」
3.ユーザープロフィールの取得(V2)
「+新しいステップ」からOffice 365 Usersの「ユーザープロフィールの取得(V2)」アクションを選択し、以下を指定します。
ユーザー(UPN):「応答の詳細を取得する」アクションから「Responder's Email」
このアクションでFormsに回答した人のOffice365ユーザー情報を取得します。
4.複数の項目の取得
「+新しいステップ」からSharePointの「複数の項目の取得」アクションを選択し、以下を指定します。
サイトのアドレス:リストを作成したSharePoint Onlineサイトのアドレス
リスト名:事前に作成したリスト名
「詳細オプションを表示する」をクリックし、「フィルタークエリ」で以下を指定します。
Date eq '@{outputs('応答の詳細を取得する')?['body/raca8d897979b44128d7563b13dc301d3']}'
※Date eq から右にある '' の中は、事前に作成したアンケートの日付設問を動的に指定してください。
Formsで回答された日付と同じ日付列になっているレコードをこのアクションで取得します。
注意点
「複数の項目の取得」アクションは、デフォルトだと100レコードまでしか取得されません。
もし100を超えるレコードを管理する場合は、「上から順に取得」で100以上の数を指定しましょう。
5.条件
「アクションの追加」からコントロールの「条件」アクションを選択し、以下を指定します。
左辺:式から以下を入力
length(Outputs('複数の項目の取得')?['body/value'])
右辺:3
この条件アクションで、「複数の項目の取得」アクションで取得されたレコード数が3つ以上あるかを判定します。
6.はいの場合「メールの送信(V2)」
Formsで回答した日付が既に3枠埋まっている場合、予約受付不可のメールを送るアクションを作ります。
「アクションの追加」からOffice365 Outlookの「メールの送信(V2)」アクションを選択し、以下画像のようにお好みで指定します。
宛先:応答の詳細を取得するアクションから「Responders' Email」
7.いいえの場合「項目の作成」
Formsで回答した日付にまだ空きがあった場合、回答をSharePoint Onlineリストに格納し、予約受付完了メールを送るアクションを作ります。
「アクションの追加」からSharePointの「項目の作成」アクションを選択し、以下を指定します。
サイトのアドレス:リストを作成したSharePoint Onlineサイトのアドレス
リスト名:事前に作成したリスト名
Title:ユーザープロフィールの取得(V2)アクションの「表示名」
Date:応答の詳細を取得するアクションの日付設問
フローの実行
早速Formsを回答して、実行してみましょう。
動作を確認するために、「2022/7/11」を4回分回答してみます。
想定では、回答の3回目までは「受付完了」となり、4回目から「受付不可」になります。
1~3回目まで
「2022/7/11」を3回回答したことにより、SharePoint Onlineリストに3レコードが登録されました。
メールも3回目の人までは、受付完了メールが届きます。
Power Automateの条件アクションで、「いいえ」のアクションが実行されたことになります。
4回目以降
既に3枠埋まっている状態で、もう一度「2022/7/11」を回答してみます。
結果、「受付不可」メールが届きました。
既に3枠埋まっているため、SharePoint Onlineリストに回答内容が格納されることもありません。
Power Automateの条件アクションで、「はい」のアクションが実行されたことになります。
4回同じ日付で回答したときに受信したメール結果です。
先着3名までは「受付完了」になり、4名以上はすべて「受付不可」のメールが送信されています。
さいごに
「複数の項目の取得」アクションでフィルタークエリを用いることで、Formsで回答した日付と一致したレコードを取得し、
「条件」アクションで一致したレコードが3つ以上あった場合、受付不可メールを送るというフローのご紹介でした。
今回はFormsアンケートが日付設問であることを前提に作成しましたが、選択肢設問でも同じようなことができると思います。
是非色んなパターンで試してみてください!