MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Automate & Microsoft Lists で 時刻表LINE Botを作る (1) - データ準備

こんなものを作りました。(AWSでLambdaやNode.jsでほかの方が作られていたもののパクリです!)

あまり応用があるとも思えないけど、作り方のご紹介です。

ここで作るのはあくまでも自分用の時刻表Botです。なので、自分がよく使う駅だけ登録するものとします。

構成というほど構成もないですが、LINEからのメッセージを Power Automate で受け取って、Microsoft Lists に作った時刻表リストから適切な行を取得し返却しています。

f:id:mofumofu_dance:20210406205325p:plain

まずはデータ準備から。データ準備がすごく大変だとやる気も起きませんが、Power BI Desktopを使うと比較的簡単に時刻表のリストを作れます。

Power BI Desktop で時刻表を取得する

時刻表をリストに入れるために、CSVかJSONデータが欲しいところです。これには ekitan の電車時刻表をデータソースとして、Power BI Desktop を使うのが最も手作業がなさそうでした。

Power BI Desktop を起動して、[ データを取得 ] > [ Webから ] とすすみ、時刻表のURLを指定します。この際、時刻表は平日/休日を指定して、かつリスト形式にしてください。

例えば飯田橋駅の総武線上り平日では以下のようなURLになります。

https://ekitan.com/timetable/railway/line-station/184-23/d2?view=list&dw=0

f:id:mofumofu_dance:20210406212533p:plain
リスト表示にした時刻表URLをPower BI Desktop のデータソースに指定

ナビゲーターが表示されるので、目的の形式になっているテーブル ( 下図ではテーブル3 ) を選択し、[ データの変換 ] をクリックします。

f:id:mofumofu_dance:20210406213120p:plain
目的のテーブルを選んでデータ変換

もうすでに時刻表らしきデータになりました。(すごい!)

ただ、上り下りどちらも含んでいるので、必要なほうだけにします。( 三鷹に会社がある想定で下りだけを残します )

f:id:mofumofu_dance:20210406213456p:plain
時刻表データは上りと下りどちらも含んでいる

[ 行の削除 ] > [ 上位の行の削除 ] とすすみ、上りと下りの境目の行をしていします。すると、必要な下り方面だけの時刻が得られました。

f:id:mofumofu_dance:20210406213958p:plain
不要な行を削除する

データを加工する

ここまでで大体必要なデータにはなっていますが、少し加工して行き/帰りどちらなのか、また時刻のみの列を日時型にしておきます。

f:id:mofumofu_dance:20210406214733p:plain
日時型への変換とカスタム列の追加

また、日付部分が 1899-12-30 になっていると、あとでExcelに持っていったときにシリアル値がマイナスになってうまく日時型と認識されなくなるので

= Date.AddYears([Column1], 121)

という具合に適当な年数を日時型の列に足しておきます。

f:id:mofumofu_dance:20210406221824p:plain
カスタム列として年数を適当に足したものを作成

あとはレポート画面に進んで、テーブルのビジュアルを追加、必要な列をビジュアルに設定します。こうすると、データをCSV形式でエクスポートできるようになります!これでほぼ完成!

f:id:mofumofu_dance:20210406221924p:plain
テーブルビジュアルに日時と行き帰りの列を追加

同様の手順で帰路の時刻表も取得しておきます。CSV形式でエクスポートし、2つのCSVファイルをくっつけてテーブルを挿入すれば、自分用の時刻表完成です。まだExcel表ですが。

f:id:mofumofu_dance:20210406222124p:plain
自分用時刻表完成!

ここで日付部分が2020/12/30 固定になっていて気になった方もいるかもしれませんが、これはあくまでも静的な時刻表なので、日付はなんでもいいんです。

Power Automate からデータ取得する際も、日付を固定して リストにフィルター用のクエリを実行します。

ということで、完成。最後にMicrosoft Lists にリストを作ります。

Lists 作成

先ほど作成できた Excel ファイルからリストを作成します。

特に迷うところはありませんが、日時部分を正しく Date and time 型の列として設定してください。

f:id:mofumofu_dance:20210406222701p:plain
時刻表がListsにできました

以上で時刻表を含む Microsoft Lists のリストができました!

ここでは平日のダイヤのみ入れましたが、もし休日ダイヤも入れたい場合には「休日/平日」のフラグを入れるカスタム列を Power BI Desktop のデータ加工の段階で入れておきましょう。

おわり

LINE Botで時刻表お知らせを作成する準備として Microsoft Lists に自分用の時刻表を作りました。

ここでは ekitanの時刻表を Power BI Desktop のデータ取得機能で抽出することで、手作業でポチポチ時刻表を作る手間を省いています。

今回はもっとも簡単な時刻表でしたが、休日/平日、快速・鈍行などの属性をリストにいれてもいいかもしれません。

次回は Power Automate 上で、 指定した 時刻 + 行き帰り の情報からアイテムを取得する方法をご紹介します。


第1回: Power Automate & Microsoft Lists で 時刻表LINE Botを作る (1) - データ準備 - MoreBeerMorePower

第2回: Power Automate & Microsoft Lists で 時刻表LINE Botを作る (2) - メインのロジック作成 - MoreBeerMorePower

第3回: Power Automate & Microsoft Lists で 時刻表LINE Botを作る (3) - LINE からのメッセージ受信と応答 - MoreBeerMorePower