Microsoft Bookings の予定を Power Automate で使う方法

Microsoft Bookings 使ってますか？

https://www.microsoft.com/ja-jp/microsoft-365/business/scheduling-and-booking-app

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/dadcfa02-65e1-e693-23d0-682cc6c7a1a5.png)

Microsoft 365（以降、M365）の予定表と連動した「簡易的な予約サイト」を手軽に提供できるソリューションです。M365 テナント内に限定した公開のみでなく、テナント外部の方へも予約サイトとして提供できるのでニーズに合致する場面があれば活躍すると思います。

今回は Bookings の予約から Power Automate のフローを発火させてみようと思います。

# 結論
先に結論を置いておくと、

「Bookings で作られる予約予定表は”他人の予定表”としてアクセスできる」

です。
Outlook 等で他人の予定や会議室などリソースの空き状況を確認するのと同様に Bookings の予定表を自分のカレンダーへ追加しておくだけで、後は Power Automate で予定表を扱うようにフローを組むだけです。

# 試してみた
これ以降は、実際に試してみた結果のメモです。

## Bookings の準備
備忘録も兼ねて、記事投稿時点（2022/04/05）の Bookings 作成方法から続けます。
なお、アクセス権などの設定は Bookings 側の設定に依存します。Bookings の利用詳細等については [Docs](https://docs.microsoft.com/ja-jp/microsoft-365/bookings/bookings-overview?view=o365-worldwide&WT.mc_id=BA-MVP-5004053) を参照ください。

### 予約予定表の追加
冒頭の URL、または M365 のアプリランチャーから「Bookings」を探して Bookings のサイトへアクセスします。「今すぐ始める」をクリックすると、Bookings として利用できる予定表の選択画面が表示されます。はじめての場合は1つもないので［予約予定表を追加］をクリックします。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/783118d6-5a9b-b46f-125a-a02ecd10f4eb.png)
当記事では ”Bookings01” と当たり障りのない値で作っていきます。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/4de93f53-23c6-a0bd-ecef-0e2d49236d30.png)

### ビジネスについて教えてください
予約予定表を追加すると、その予約画面が「どんなビジネスなの？」を入力する画面に切り替わります。必要に応じて入力項目を埋めて［続行］です。
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/1a18bfa6-6627-518e-7ac0-8b8fc8f8a381.png)

### 予約予定表の管理画面
問題無く Bookings で予約予定表が作成されると、これまでに入力した情報で予約受付や担当するスタッフの選択などができる画面へ遷移します。その画面上で［予約ページ］をクリックすると表示される”あなたの予約ページ”から予約画面が確認できます。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/2b4811c9-bd84-c249-e2e1-9500794916e9.png)
※画面は”新しい Bookings を試す”が ON になっています。

これ以降の詳細な設定は割愛しますが、予約予定表の共有レベルを操作することで、テナント内限定、または一般公開可能な簡易予約画面がサクッと提供できます。しかも、スタッフとして指定したメンバーの予定空き状況と自動連動して、です。Bookings が提供する予約画面から、スタッフを指名して予約されると、指名されたメンバーの予定が自動的に確保されます。便利ですよね。

## M365 管理センターで確認してみた
Bookings で予約予定表を追加した後で、M365 管理センターの［アクティブなユーザー］を確認すると、先ほど追加した対象が確認できます。なるほど、予約予定表と言うだけあって、なんらかの形式でメールボックス（予定表付き）？？ が作成されていると推測できます。
![06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/93d7e256-9c93-5c72-cd41-ed6ce9553fef.jpeg)
ただ、Exchange 管理センターでメールボックスを探しても、Bookings で作った対象は表示されないんですよね・・・。画像は割愛しますが、グループにもリソースにも該当のモノはありません。なんだか特別なメールボックス（と言ってよいのか？）みたいです。
![07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/b6f24a9e-7c38-fde0-ffed-12708f89a8dc.jpeg)
Power Automate のフローで利用できれば良い、と判断してこれ以上の深追いはしておりません（汗
## Power Automate から利用する
何となく、ココまでの説明で把握している方もいるんだろうな、と思いつつ。

### Power Automate から利用する事前準備
まず、フローを作成するユーザーの予定表へ、該当の Bookings 予約予定表を他人の予定などに追加しておきます。
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/60931d9e-76a0-b742-80df-434be8a84823.png)

### フローのトリガーで予約予定表を指定する
カスタム項目から 予定表ID で指定しても良いのですが、メンドウですよねｗ
なので、前述のように”他人の予定表を事前に参照しておく”と、選択肢に表示されるので楽ちんです。
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/918ed090-5f77-9a52-15dd-03beea6adf27.png)
なお、今回は「新しいイベントが作成されたとき（V3）」で検証しています。もちろん、変更やイベントが始まる時、といった予定表に連動したトリガーであれば動作すると思います。

### フローの全体像
上記トリガーの後に［作成］アクションで件名を取得します。Bookings の予約が実施されたら発火する、というのが検証できれば良いので簡単なフローにしておきました。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/62f0a145-5386-2a1f-904f-9e7a58444964.png)

## 動作確認
実際に Bookings から予約して、フローが動作するのかテストします。

Bookings の予約画面から申し込みをして―――。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/88387909-14f8-3ffa-5420-fc632bd393b2.png)
フローの結果をチェックしてみると、チャンと実行されています。件名が取得できていますね。
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/25d128f1-e91e-de0f-6ba2-1cffde2f91d7.jpeg)
今回は説明のために件名のみを取得しておりますが、予定表関連のトリガーから取得できる情報は入手可能でしょう。

# まとめ
Bookings で作成したサービスが「なんらか特殊な予定表」だ、というのが把握できれば、他人の予定表からフローを組むのと同じ、という結論で問題なさそうですよね。なお、公式の情報ではなくて、あくまで当方が検証した結果からの推測を含む、という点は予めご承知おきください。

Bookings の予定が追加された時や、イベントの開始前に Teams へ通知するなどが自動化できそうですね！

それでは皆さま、素晴らしい Power Platform Life を！！