ふらりのメモ書き

Microsoft 365 , Power Platform らへん

【Power Automate】connpass のイベントを取得する3 (フィルター編)

取得した connpass のイベント情報にフィルターをかけて、直近のイベントの取得までのメモ書きです。
イベントのリマインドなどに活用できそうです。

前回の blog と API の仕様の確認

前回の blog はこちら
flali.hatenablog.com

APIの仕様はこちらに記載があります。
よく読んでから利用しましょう。
connpass.com

特定のグループで開催しているイベントにフィルターをかけたい

特定のグループで開催しているイベントを取得

特定のグループで開催しているイベントの取得方法はこちらに記載しています。

flali.hatenablog.com

開催前のイベントを取得したい

フロー実行時のデータ取得時点の日時以降のイベントを取得しようと思います。
前回の blog のフローを実行すると下記のような順番と個数でデータが取得できます。

アレイのフィルター処理を追加する

connpass API には、開催日を指定した検索クエリはあるのですが、○○以降などのクエリがありません。
アレイのフィルター処理を追加して、HTTP アクションで取得したデータにフロー実行時の日時より後のイベントでフィルターをかけます。
※HTTP アクションの中身は前回のblogをご参照ください。


※2022/09/04 修正 connpass APIで取得できる日付がJSTだったので修正しました。次の値以上 ⇒ 次の値より大きい、utcnow()⇒addHours(utcNow(), 9) に変更。

アレイのフィルター処理の設定

HTTP アクションで取得したデータはjsonの解析をかけていないので、手動で各項目を入力します。
※動的なコンテンツではなく、「式」を選択するのがポイントです。

差出人
動的なコンテンツからHTTPアクションの「本文」を選択すると body('HTTP') になってしまうので、ご注意ください。

body('HTTP')?['events']

左の値
開始日時の 'started_at' を指定します。

item()?['started_at']

条件
「次の値より大きい」を選択 ※ 2022/09/04 修正 次の値以上 ⇒ 次の値より大きい

右の値
※ 2022/09/04 修正 utcnow()⇒addHours(utcNow(), 9) 、connpass API の開始日がJSTだったので、あわせました。

addHours(utcNow(), 9)

実行する

実行すると、実行したタイミングの日時以降のイベントが取得できます。

フロー実行日時以降のイベントのみになっています。
今回は1つのみですが、開催予定が複数ある場合は、複数の予定が出力されます。

直近の未開催のイベント1件のみ取得する

アレイのフィルター処理で取得したデータが1件のみでも、データとしてはアレイ(複数のデータ)と認識されるので、このまま処理しようとするとどこかで「Apply to each」が入ります。また、これから開催予定のイベントが複数ある場合もあります。

そこで、HTTP アクションで order を 2 で指定し開催日時順で取得していますので、Last関数 を使用してデータの順番の最後にあるイベントを1件を取得すれば、直近の未開催のイベントを1件取得できます。
※動的コンテンツで入力できないので、手動で入力します。式を使うのがポイントです。

Last(body('アレイのフィルター処理'))  

実行結果

実行結果を見るとアレイのフィルター処理であった [] (ブラケット) が外れていて、直近の1件のみデータを取得できています。

後続にjsonの解析をかければ、動的コンテンツとしても利用できます。

さいごに

直近のイベントが取得できました。Power Automate はデータコネコネ(データ操作)できるのが面白いですね。