前回
毎朝9時になったらconnpassのマイページ情報を取得するフローを作成しました。
情報取得編「記事はこちら」をやったので、今回は、データの整形編をお送ります~
取得したデータの整形
今回取得したいもの
・タイトル
・開始時間
・終了時間
・URL
取得したいものはこれ
開始?マップとは何ぞや…何を入れればいいんや…
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()
開催前か終了しているか
差出人
値の選択(式):
item()?['status']
開始、終了予定時刻の修正
開始
マップ
開始時間と終了予定時間の時間を日本時間に修正する
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を作っているので、再利用する
当日参加するイベントを取得
差出人
左側の値の選択(式):
formatDateTime(item()?['開始時刻'], 'yyyyMMdd')
・選択2で開始時刻を作っているので、再利用する
・自分の好きな形式で表示→yyyyMMdd
・とった日付を整形→formatDateTime()
右側の値の選択(式):
formatDateTime(body('タイム_ゾーンの変換'), 'yyyyMMdd')
・選択2で開始時刻を作っているので、再利用する
・自分の好きな形式で表示→yyyyMMdd
・当日の日付を整形→formatDateTime()
まとめ
データ整形編長かった…
でもやりたいことはできたし、あとは通知編だけ!
APIがなくてもHTTPから取得するやり方も難しくない!
このPower Automateのフローをつくちゃえばほったらかしでも当日になったら通知してくれるからちょー便利!