5
3

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 3 years have passed since last update.

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

Posted at

#前回
毎朝9時になったらconnpassのマイページ情報を取得するフローを作成しました。
情報取得編「記事はこちら」をやったので、今回は、データの整形編をお送ります~

#取得したデータの整形
image.png
メチャクチャあるやん!っえどうしよう…

今回取得したいもの
・タイトル
・開始時間
・終了時間
・URL
取得したいものはこれ
image.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">')

  ・最初に出てくる指定した文字列の開始地点を取得するindexOf()
  ・開催前or終了<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>')),'">'))

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

take(substring(item(),Add(indexOf(item(),'<span class="dtstart"><span class="value-title" title="'),55)),20)

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

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

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

 ・終了予定時刻<span class="dtend"><span class="value-title" title="
 ・最初に出てくる指定した文字列の開始地点を取得するindexOf()
 ・開始位置を進めるsubstring( ,53)
 ・何文字とるか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>')),'">'))

 ・イベントのURL<p class="event_title"><a class="url summary" href="
 ・最初に出てくる指定した文字列の開始地点を取得するindexOf()
 ・開始位置を進めるsubstring( ,52)
 ・分割するsplit()
#開催前か終了しているか
image.png
開催前のものだけを取りたいなー!

##差出人
フィルターを適用するアレイ:選択の出力
image.png

値の選択(式):

item()?['status']

#開始、終了予定時刻の修正
image.png
##開始
アレイのフィルター処理の結果で帰ってきた本文
image.png
##マップ
開始時間と終了予定時間の時間を日本時間に修正する
Enterキー:英語から日本語に変更
### 1.タイトル
  Enterキー:タイトル
  値の入力(式):

item()?['title']

 ・選択でtitleを作っているので、再利用する
### 3.開始時刻
  Enterキー:開始時刻
  値の入力(式):

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

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

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

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

item()?['eventURL']

 ・選択でeventEndを作っているので、再利用する
#当日参加するイベントを取得
image.png
##差出人
フィルターを適用するアレイ:選択2の出力
image.png

左側の値の選択(式):

formatDateTime(item()?['開始時刻'], 'yyyyMMdd')

・選択2で開始時刻を作っているので、再利用する
自分の好きな形式で表示yyyyMMdd
とった日付を整形formatDateTime()

右側の値の選択(式):

formatDateTime(body('タイム_ゾーンの変換'), 'yyyyMMdd')

・選択2で開始時刻を作っているので、再利用する
自分の好きな形式で表示yyyyMMdd
当日の日付を整形formatDateTime()
#まとめ
データ整形編長かった…
でもやりたいことはできたし、あとは通知編だけ!
APIがなくてもHTTPから取得するやり方も難しくない!
このPower Automateのフローをつくちゃえばほったらかしでも当日になったら通知してくれるからちょー便利!

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?