2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

ごきげんよう、百合宮桜(Miyu)です(*'▽')
今回は Bookings で予約された予定を Teams に一覧で投稿するフローを紹介します。

image.png

本フローではフロー実行者の Outlook 予定表を参照しています。
従って フロー実行者の予定表に Bookings の予約が登録されている 前提です。予めご了承ください。

フローの全体像

大きく分けると3つのステップがあります。

  1. Bookings の予約ページで作成した予定を取得
  2. 予定の詳細(件名や会議URL)を配列に格納
  3. HTML テーブルに変換して Teams に投稿

image.png

それぞれのポイントを解説していきます。

Bookings の予約ページで予約した予定を取得

トリガーについて

Microsoft Bookings コネクタの When a appointment is Created トリガーを利用します。

image.png

本トリガーは予約ページの 管理者 だけが利用できます。自動化トリガーですので、 フロー開発者が予約ページの管理者に設定 してあるかを確認してください。

image.png

プルダウンで Booking Page が出てこない場合はカスタム値で入力できます。

image.png

カスタム値には 統合 > コネクタとAPIs > Power Automate の SMTPアドレス を入力してください。

image.png

遅延について

Bookings で作成された予定が Outlook 予定表に登録されるまでにタイムラグが発生します。おおよそ 1分程度待つとほぼ確実に登録されていますので、イベントの取得(V4)アクションの前に1分の遅延を入れています。

image.png

予定の詳細を配列に格納

予約の検索

Office 365 Outlook コネクタの イベントの取得(V4) アクションで自分の予定表から開催者が Bookings の予約ページ名のものだけを検索します。

image.png

開催者でフィルタする場合はフィルタークエリに以下のように書きます。

organizer/emailAddress/name eq '予約ページ名称' 

ここでの予約ページ名称は最初に登録したものです。何か事情があって後日予約ページ名称を変更したとしても 1番最初に登録した名称でないと検索されません ので注意してください。

私は期間でも絞りたかったので、and 条件で開始日や終了日をフィルタークエリも入れています。日時の検索キーは Outlook 予定表のタイムゾーンに合わせる 必要がありますので注意してください。

予約の詳細を取得し、1件ずつ配列に追加する

Outlook 予定の Teams 会議 URL はイベントの取得アクションでは取得できません。その為、Office 365 Outlook コネクタの HTTP 要求を送信します アクションで取得する必要があります。
このアクションは GraphAPI を利用しますが、Microsoft Entra ID 側での権限設定は 不要 です。Microsoft 365 のライセンスの範囲内で利用できます。

image.png

https://graph.microsoft.com/v1.0/me/events/@{items('For_each')?['id']}

本稿ではフロー実行者の予定表から予定を取得する方法を採用しています。フロー実行者以外の予定表を取得したい場合は GraphAPI リファレンス イベントを取得する を参照してください。

Teams に投稿する情報を一覧化する為に配列変数へ格納します。

image.png

start と end はイベントの取得(V4)アクションで取得した開始時刻と終了時刻を「2026-05-28 11:00」という書式に変換しています。

image.png

formatDateTime(
  items('For_each')?['start'],
  'yyyy-MM-dd HH:mm'
)

HTML テーブルに変換して Teams に投稿

配列から HTML に必要なモノを抽出

選択 アクションで配列の中から Teams で共有する情報だけを抽出します。この時に会議リンクを HTML タグでハイパーリンク化します。

image.png

concat('<a href="', item()?['URL'], '">会議に参加</a>')

HTMLテーブルの作成 アクションで HTMLテーブル化します。

image.png

HTML テーブル化した時に選択アクションで作ったハイパーリンク化がエンコードされて、機能しなくなってしまうので 作成 アクションに Replace 関数を入れて置換します。

image.png

replace(
  replace(
    replace(
        body('HTML_テーブルの作成'),
        '&lt;',
        '<'
    ),
  '&quot;',
  '"'
    ),
'&gt;',
'>'
)

Teams に投稿

Teams コネクタの チャットまたはチャネルでメッセージを投稿する アクションで一覧表を投稿します。

image.png

image.png

画像ではフローボットとチャットするになっていますが、チームへの投稿でも同じように機能します。

まとめ

少し複雑なフローですし、制約もいくつかありますが、Power Automate Premium ライセンスなしで気軽に試せます。 Bookings での予約の情報共有にお困りの方はぜひ試してみてください(*'▽')
それではごきげんよう✨

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?