はじめに
ごきげんよう、百合宮桜(Miyu)です(*'▽')
今回は Bookings で予約された予定を Teams に一覧で投稿するフローを紹介します。
本フローではフロー実行者の Outlook 予定表を参照しています。
従って フロー実行者の予定表に Bookings の予約が登録されている 前提です。予めご了承ください。
フローの全体像
大きく分けると3つのステップがあります。
- Bookings の予約ページで作成した予定を取得
- 予定の詳細(件名や会議URL)を配列に格納
- HTML テーブルに変換して Teams に投稿
それぞれのポイントを解説していきます。
Bookings の予約ページで予約した予定を取得
トリガーについて
Microsoft Bookings コネクタの When a appointment is Created トリガーを利用します。
遅延について
Bookings で作成された予定が Outlook 予定表に登録されるまでにタイムラグが発生します。おおよそ 1分程度待つとほぼ確実に登録されていますので、イベントの取得(V4)アクションの前に1分の遅延を入れています。
予定の詳細を配列に格納
予約の検索
Office 365 Outlook コネクタの イベントの取得(V4) アクションで自分の予定表から開催者が Bookings の予約ページ名のものだけを検索します。
開催者でフィルタする場合はフィルタークエリに以下のように書きます。
organizer/emailAddress/name eq '予約ページ名称'
ここでの予約ページ名称は最初に登録したものです。何か事情があって後日予約ページ名称を変更したとしても 1番最初に登録した名称でないと検索されません ので注意してください。
私は期間でも絞りたかったので、and 条件で開始日や終了日をフィルタークエリも入れています。日時の検索キーは Outlook 予定表のタイムゾーンに合わせる 必要がありますので注意してください。
予約の詳細を取得し、1件ずつ配列に追加する
Outlook 予定の Teams 会議 URL はイベントの取得アクションでは取得できません。その為、Office 365 Outlook コネクタの HTTP 要求を送信します アクションで取得する必要があります。
このアクションは GraphAPI を利用しますが、Microsoft Entra ID 側での権限設定は 不要 です。Microsoft 365 のライセンスの範囲内で利用できます。
https://graph.microsoft.com/v1.0/me/events/@{items('For_each')?['id']}
本稿ではフロー実行者の予定表から予定を取得する方法を採用しています。フロー実行者以外の予定表を取得したい場合は GraphAPI リファレンス イベントを取得する を参照してください。
Teams に投稿する情報を一覧化する為に配列変数へ格納します。
start と end はイベントの取得(V4)アクションで取得した開始時刻と終了時刻を「2026-05-28 11:00」という書式に変換しています。
formatDateTime(
items('For_each')?['start'],
'yyyy-MM-dd HH:mm'
)
HTML テーブルに変換して Teams に投稿
配列から HTML に必要なモノを抽出
選択 アクションで配列の中から Teams で共有する情報だけを抽出します。この時に会議リンクを HTML タグでハイパーリンク化します。
concat('<a href="', item()?['URL'], '">会議に参加</a>')
HTMLテーブルの作成 アクションで HTMLテーブル化します。
HTML テーブル化した時に選択アクションで作ったハイパーリンク化がエンコードされて、機能しなくなってしまうので 作成 アクションに Replace 関数を入れて置換します。
replace(
replace(
replace(
body('HTML_テーブルの作成'),
'<',
'<'
),
'"',
'"'
),
'>',
'>'
)
Teams に投稿
Teams コネクタの チャットまたはチャネルでメッセージを投稿する アクションで一覧表を投稿します。
画像ではフローボットとチャットするになっていますが、チームへの投稿でも同じように機能します。
まとめ
少し複雑なフローですし、制約もいくつかありますが、Power Automate Premium ライセンスなしで気軽に試せます。 Bookings での予約の情報共有にお困りの方はぜひ試してみてください(*'▽')
それではごきげんよう✨














