取得した connpass のイベント情報にフィルターをかけて、直近のイベントの取得までのメモ書きです。
イベントのリマインドなどに活用できそうです。
前回の blog と API の仕様の確認
前回の blog はこちら
flali.hatenablog.com
APIの仕様はこちらに記載があります。
よく読んでから利用しましょう。
connpass.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 はデータコネコネ(データ操作)できるのが面白いですね。