2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Power Automate】イベント開催日をもとに、予約スケジュールを自動登録するフローを作成する

Last updated at Posted at 2022-12-21

概要

ライブコンサートやスポーツ観戦などでチケット抽選申込の期日が決まっているものがある。「抽選申し込み・予約するの忘れていた……」を防ぐ仕組みを作りたい。
本記事ではPower Automateを利用し、中央競馬の指定席予約スケジュールを参考に、予約スケジュール自動登録フローを作成する。

設計

・中央競馬のレース開催日の指定席予約スケジュールを自動登録する
・一般抽選の予約スケジュールは12日前の17:00から10日前の18:00までであることから、その期間を自動登録する
・イベントの作成をトリガーにイベントを作成するフローであるため、無限ループ防止策を検討する

作成したフロー

image.png

各アクション詳細

競馬の予定が作成されたとき

元アクション名:新しいイベントが作成されたとき (V3)
予定表「競馬」で作成したイベントをトリガーに設定する。
image.png

タイムゾーンの変換

作成されたイベントから予約スケジュールを作成する為の下準備。
イベント作成時にタイムゾーンをJSTに指定してもトリガーの出力ではUTCに変換されるため、このアクションでJST(UTC+9:00)に変換する。

image.png

image.png

convertTimeZone関数を用いることでも対応可能。

変数:StartDateTime

元アクション名:変数を初期化する
予約スケジュールの開始日時を格納する。
image.png

関数部分はアクション「タイムゾーンの変換」の日時から12日を引いた日付をフォーマットし、素のテキストに時刻(T17:00:00)を設定している。

formatDateTime(subtractFromTime(body('タイム_ゾーンの変換'),12,'Day'),'yyyy-MM-dd')

変数:EndDateTime

元アクション名:変数を初期化する
予約スケジュールの終了時刻を格納する。

image.png

変数「StartDateTime」同様、関数部分はアクション「タイムゾーンの変換」の日時から10日を引いた日付をフォーマットし、素のテキストに時刻(T18:00:00)を設定している。

formatDateTime(subtractFromTime(body('タイム_ゾーンの変換'),10,'Day'),'yyyy-MM-dd')

予約スケジュールの作成

元アクション名:イベントの作成 (V4)
件名に文字列「指定席予約期間:」とトリガーとなったイベントの件名を設定し、開始時刻に変数「StartDateTime」、終了時刻に変数「EndDateTime」を設定する。

image.png

必要に応じてリマインダーをオンにする。
image.png

実行イメージ

トリガーとなるイベントを作成する。年末のビッグレースを逃したくないという思いをフローに乗せる。
image.png

image.png

暫く経つと、予約スケジュールが自動的に作成される。

image.png

注意点

無限ループの防止策

本記事で作成したフローは「イベントの作成」をトリガーにして予約スケジュールを作成しているため、フローで自動作成したイベントをトリガーにして無限ループを引き起こしてしまう。
そのため、無限ループの防止策を設定する必要がある。

予定表IDを別のものに設定する

難易度:低
トリガーに設定しているカレンダーと自動アクションに設定するIDをそれぞれ別のものに設定する。本記事で採用。

トリガーに設定しているIDは「競馬」だが、アクションに設定しているIDは「抽選スケジュール」であるため、無限ループが防止できる。
image.png

image.png

多分これが一番早いと思います

トリガーの条件を設定する

難易度:中
フロー内で作成するアクションで作成されるオブジェクトのプロパティを基に、トリガーの条件を設定する。

下記の例は、「イベントの件名が'指定席予約期間'という文字列から始まらない場合、フローを起動する」 というトリガーの条件。本記事で作成した予約スケジュールの件名は'指定席予約期間'から始まっており、この条件でフローの無限ループ防止が可能となる。
トリガー出力を一度サンプルで取得し、無限ループ防止に利用できるプロパティを検討する必要がある。

image.png

@not(startsWith(triggerOutputs()?['body/subject'],'指定席予約期間'))

参考文献

指定席ネット予約

2
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?