Power Automateを使ってconnpassの参加イベントリマインダーを作成してみた～データの整形編～

#前回
毎朝9時になったらconnpassのマイページ情報を取得するフローを作成しました。
情報取得編[「記事はこちら」](https://qiita.com/sayaka121413/items/a8c6b8bf7c5c859f35e5)をやったので、今回は、データの整形編をお送ります～

#取得したデータの整形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/82a1b258-c2f2-793d-51f8-4de523293f44.png)
<font color="orange">メチャクチャあるやん！っえどうしよう…</font>

今回取得したいもの
・タイトル
・開始時間
・終了時間
・URL
取得したいものはこれ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/6b739956-57d3-282f-b004-b0dae426f7d1.png)
開始？マップとは何ぞや…何を入れればいいんや…
##1.開始(下の写真のどここから始めるのかい？)
値の入力(式)：

```
split(body('HTTP'),'<div class="event_list vevent">')
```

イベントで分割して開始したい！

```<div class="event_list vevent">```
が一つのイベントなので、
・split→イベントごとに分割する。
・body →HTTP本文（結果で帰ってくる）
・<~>　→イベントごとに始める。

##2.マップ
以下の5つを取りたいので、式を書きます。
###　1.ステータス
　　Enterキー：status
　　値の入力(式)：

```
indexOf(item(),'<span class="label_status_event offer">')
```
　　・<font color="orange">最初に出てくる指定した文字列の開始地点を取得する</font>→```indexOf()```
　　・<font color="orange">開催前or終了</font>→```<span class="label_status_event offer">```
###　2.タイトル
　　Enterキー：title
　　値の入力(式)：

```
last(split(first(split(substring(item(),Add(indexOf(item(),'<p class="event_title"><a class="url summary" href="'),52)),'</a>')),'">'))
```
　・<font color="orange">タイトル</font>→```<p class="event_title"><a class="url summary" href="```
　・<font color="orange">最初に出てくる指定した文字列の開始地点を取得する</font>→```indexOf()```
　・<font color="orange">開始位置を進める</font>→```substring(　,52)```
　・<font color="orange">分割する</font>→```split()```
###　3.開始時刻
　　Enterキー：eventStart
　　値の入力(式)：

```
take(substring(item(),Add(indexOf(item(),'<span class="dtstart"><span class="value-title" title="'),55)),20)
```
　・<font color="orange">開始時間</font>→```<span class="dtstart"><span class="value-title" title="```
　・<font color="orange">最初に出てくる指定した文字列の開始地点を取得する</font>→```indexOf()```
　・<font color="orange">開始位置を進める</font>→```substring(　,55)```
　・<font color="orange">何文字とるか</font>→```take(　,20)```

###　4.終了予定時刻
　　Enterキー：eventEnd
　　値の入力(式)：

```
take(substring(item(),Add(indexOf(item(),'<span class="dtend"><span class="value-title" title="'),53)),20)

```
　・<font color="orange">終了予定時刻</font>→```<span class="dtend"><span class="value-title" title="```
　・<font color="orange">最初に出てくる指定した文字列の開始地点を取得する</font>→```indexOf()```
　・<font color="orange">開始位置を進める</font>→```substring(　,53)```
　・<font color="orange">何文字とるか</font>→```take(　,20)```

###　5.イベントのURL
　　Enterキー：eventURL
　　値の入力(式)：

```
first(split(first(split(substring(item(),Add(indexOf(item(),'<p class="event_title"><a class="url summary" href="'),52)),'</a>')),'">'))
```

　・<font color="orange">イベントのURL</font>→```<p class="event_title"><a class="url summary" href="```
　・<font color="orange">最初に出てくる指定した文字列の開始地点を取得する</font>→```indexOf()```
　・<font color="orange">開始位置を進める</font>→```substring(　,52)```
　・<font color="orange">分割する</font>→```split()```
#開催前か終了しているか
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/222a9485-e8f2-9dea-efab-bb3f07bc9281.png)
開催前のものだけを取りたいなー！

##差出人
フィルターを適用するアレイ：選択の出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/bc8f1a9f-ee6b-2756-2c9a-c185bfe2b41b.png)

値の選択(式)：

```
item()?['status']
```
#開始、終了予定時刻の修正
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/ee8062e7-a4b2-f75e-e88a-40a4a47f1b77.png)
##開始
アレイのフィルター処理の結果で帰ってきた本文
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/2c62fc5c-0207-6cce-f0da-9e8d6aae1921.png)
##マップ
開始時間と終了予定時間の時間を日本時間に修正する
Enterキー：英語から日本語に変更
###　1.タイトル
　　Enterキー：タイトル
　　値の入力(式)：

```
item()?['title']
```
　・選択で<font color="orange">title</font>を作っているので、再利用する
###　3.開始時刻
　　Enterキー：開始時刻
　　値の入力(式)：

```
addHours(item()?['eventStart'],9,'yyyy/MM/dd HH:mm')
```
　・選択で<font color="orange">eventStart</font>を作っているので、再利用する
　・<font color="orange">協定世界時の時間を取ってくるため</font>→```addHours(　,9,　)```
　・<font color="orange">自分の好きな形式で表示</font>→```yyyy/MM/dd HH:mm```
###　4.終了予定時刻
　　Enterキー：終了時刻
　　値の入力(式)：

```
addHours(item()?['eventEnd'],9,'yyyy/MM/dd HH:mm')

```
　・選択で<font color="orange">eventEnd</font>を作っているので、再利用する
　・<font color="orange">協定世界時の時間を取ってくるため</font>→```addHours(　,9,　)```
　・<font color="orange">自分の好きな形式で表示</font>→```yyyy/MM/dd HH:mm```
###　5.イベントのURL
　　Enterキー：eventURL
　　値の入力(式)：

```
item()?['eventURL']
```
　・選択で<font color="orange">eventEnd</font>を作っているので、再利用する
#当日参加するイベントを取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/4cc65529-7d5a-25a0-41b0-7fea9cc5befa.png)
##差出人
フィルターを適用するアレイ：選択2の出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404009/6169502b-6ec5-23e8-c6eb-3aca4bfd00f2.png)

左側の値の選択(式)：

```
formatDateTime(item()?['開始時刻'], 'yyyyMMdd')
```
・選択2で<font color="orange">開始時刻</font>を作っているので、再利用する
・<font color="orange">自分の好きな形式で表示</font>→```yyyyMMdd```
・<font color="orange">とった日付を整形</font>→```formatDateTime()```

右側の値の選択(式)：

```
formatDateTime(body('タイム_ゾーンの変換'), 'yyyyMMdd')
```
・選択2で<font color="orange">開始時刻</font>を作っているので、再利用する
・<font color="orange">自分の好きな形式で表示</font>→```yyyyMMdd```
・<font color="orange">当日の日付を整形</font>→```formatDateTime()```
#まとめ
データ整形編長かった…
でもやりたいことはできたし、あとは通知編だけ！
APIがなくてもHTTPから取得するやり方も難しくない！
このPower Automateのフローをつくちゃえばほったらかしでも当日になったら通知してくれるからちょー便利！