こんなものを作りました。(AWSでLambdaやNode.jsでほかの方が作られていたもののパクリです!)
有言実行!Power AutomateとMicrosoft Listsで時刻表を教えてくれるLINE Bot @TaikiYoshidaJP https://t.co/zpByqGbXD4 pic.twitter.com/ryJGGC4GeQ
— Hiro (@mofumofu_dance) 2021年4月5日
あまり応用があるとも思えないけど、作り方のご紹介です。
ここで作るのはあくまでも自分用の時刻表Botです。なので、自分がよく使う駅だけ登録するものとします。
構成というほど構成もないですが、LINEからのメッセージを Power Automate で受け取って、Microsoft Lists に作った時刻表リストから適切な行を取得し返却しています。
まずはデータ準備から。データ準備がすごく大変だとやる気も起きませんが、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
ナビゲーターが表示されるので、目的の形式になっているテーブル ( 下図ではテーブル3 ) を選択し、[ データの変換 ] をクリックします。
もうすでに時刻表らしきデータになりました。(すごい!)
ただ、上り下りどちらも含んでいるので、必要なほうだけにします。( 三鷹に会社がある想定で下りだけを残します )
[ 行の削除 ] > [ 上位の行の削除 ] とすすみ、上りと下りの境目の行をしていします。すると、必要な下り方面だけの時刻が得られました。
データを加工する
ここまでで大体必要なデータにはなっていますが、少し加工して行き/帰りどちらなのか、また時刻のみの列を日時型にしておきます。
また、日付部分が 1899-12-30 になっていると、あとでExcelに持っていったときにシリアル値がマイナスになってうまく日時型と認識されなくなるので
= Date.AddYears([Column1], 121)
という具合に適当な年数を日時型の列に足しておきます。
あとはレポート画面に進んで、テーブルのビジュアルを追加、必要な列をビジュアルに設定します。こうすると、データをCSV形式でエクスポートできるようになります!これでほぼ完成!
同様の手順で帰路の時刻表も取得しておきます。CSV形式でエクスポートし、2つのCSVファイルをくっつけてテーブルを挿入すれば、自分用の時刻表完成です。まだExcel表ですが。
ここで日付部分が2020/12/30 固定になっていて気になった方もいるかもしれませんが、これはあくまでも静的な時刻表なので、日付はなんでもいいんです。
Power Automate からデータ取得する際も、日付を固定して リストにフィルター用のクエリを実行します。
ということで、完成。最後にMicrosoft Lists にリストを作ります。
Lists 作成
先ほど作成できた Excel ファイルからリストを作成します。
特に迷うところはありませんが、日時部分を正しく Date and time 型の列として設定してください。
以上で時刻表を含む 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