【Winautomation実践】Yahoo乗換案内での定期経路調査を自動化してみた④(画像付き解説)

前回に引き続き、Winautomationで作成したロボットについて紹介していきます。

前回はアウトプットへの書き込み処理を作成しました。
今回は残りの処理である申請経路の判定および結果の書き込み処理を作成して完成させます。

申請内容を追加

定期券の金額と期間を指定できるようにCustom Dialogを編集します。

横並びのラジオボタンである[Inline Radios]のコントロールを追加し、申請期間としました。

[ID]は「Period」とし、[Required]にチェックを入れます。

次に、テキストボックスである[Input]を追加し、申請金額としました。

[ID]は「Price」とします。

[Required]にチェックを入れます。
そして[Allowed Value]を「Number」にして数字のみ受け付けるようにします。

CustomDialogの設定を終えたら、結果を変数に入れます。
出発駅と到着駅と同じように、%PeriodInput%、%PriceInput%の変数を用意しました。

申請内容の判定(申請経路)

まずは定期の申請期間と申請金額と合致するルートが存在するか調べます。
合致したルートには「申請経路」の行に「◯」を書き込みます

申請経路の判定結果を記録しておくリスト変数を用意します。
取得情報整理のFuctionで[Create New List]を挿入し、%MatchingList%を作成しました。
一致したルートがあった場合に、そのルートの番号をリストに入れていきます。

0~2の3ルート分をループさせるLoopアクションを置きます。

申請期間による場合分けには[Switch]アクションを使ってみます。
[Value to Check]に場合分けに使用する変数である%PeriodInput%を設定します。

Switchアクション内にCaseアクションを置きます。
まずは1ヶ月のパターンから作成します。

Case内でインプットダイアログで入力された申請金額と、Webから取得した定期代を比較するのですが、
データの型が数値と文字列で異なるため、そのままでは比較できません。

そのため、Webから取得した定期代を数値に変換します。

数値変換前に、不要な「円」を削除します。
[Replace Text]で「円」をブランクに置き換えます。

数値変換可能にできたら、テキストを数値に変換します。
[Convert Text to Number]を使用します。

数値に変換したらIfアクションで、申請金額とWebから取得した定期代を比較します。

条件を満たす場合に申請経路判定用のリストに追加します。

同様に申請期間が3ヶ月と6ヶ月のケースも用意します。

判定結果をExcelに書き込みます。
アウトプットファイル書込のFunctionの最後に作成していきます。

%BaseVal%は書き込む列の基準となる値です。
BaseValにルートの番号を足した列のインデックスに書き込みます。
(例:ルート1の場合2+1でインデックス3のC列に書き込み)

ループにはForEachを使用しました。
リストの要素のインデックスは使用しないためです。

書き込みは下の画像のように設定します。

デバッグして確認します。

申請期間を「1ヶ月」、申請金額を「6980」として実行し、ルート1に◯がついていることを確認できました。

申請内容の判定(最短時間経路)

次は最短時間の経路を判定します。

判定方法ですが、各ルートの所要時間を確認して最も数値が小さいものを最短時間とします。
ルート1→ルート2→ルート3の順にチェックしていき、最短時間を更新していきます。

申請経路判定のアクションからいくつか流用し、作成していきます。
今回もテキストを数値に変換するため、「分」を削除しています。
最初のループでは必ず最小値としてセットされるため、1回目のループで最小値をセットする処理を必ず通るようにします。

2回目以降のループでは2通りの最短時間の更新ケースが考えられます。
①現在のルートの所要時間が、最短時間より小さい場合
→%ShortestList%をクリアし、最短時間を置き換えし、現在のルートを%ShortestList%に追加
②現在のルートの所要時間が、最短時間と同じ場合
→現在のルートを%ShortestList%に追加

Else Ifを使って2通りの処理を作成しました。

Excelへの書き込みについても、申請経路判定を流用します。

申請内容の判定(最安経路)

最後に、最安経路の判定です。
判定は最短時間経路と同様の方法で行います。

最短経路からコピーして編集します。

リスト名を%LowestList%、最安値を記憶しておく変数を%LowestVal%にし、
数値変換前に削除する文字を「円」に変更しました。
また、%DataFromWebPage%のインデックスも0から1に変更しています。

書き込み処理についても最短経路からコピーします。

ForEachの大賞を%LowestList%に、書き込むExcelの行を10行目に変更しました。

これでようやく処理が完成です。

動作確認

処理が完成したら、デバッグして動作を確認します。

ダイアログで下の画像のように入力してOKを押します。

作成されたExcelファイルを確認します。

正しく出力できました。
ダイアログで申請した経路が、最短かつ最安と一目でわかりますね。
他にも出発駅、到着駅を変えていろいろテストしてみましょう。

まとめ

4回にわたり長々と書いてきましたが、いかがでしたでしょうか?

今回はインプットをダイアログから行うように作成しましたが、実際の運用ではExcel、CSV、メールの本文をインプットとすると良いと思います。
特にメールであれば、メール受信をトリガーとして自動実行することで大幅な業務効率化になりそうですね。

今後もWinautomationの小ネタなどを紹介していきたいと思いますので、どうぞよろしくお願いします。
今回のロボット作成で使った小ネタなども少し詳しく説明したいですね。

初めての記事投稿ということもあり上手く書けなかった部分もありますが、今後はもう少しコンパクトにして読みやすい記事を書けるよう頑張ります!

【Winautomation実践】Yahoo乗換案内での定期経路調査を自動化してみた①(画像付き解説)

【Winautomation実践】Yahoo乗換案内での定期経路調査を自動化してみた②(画像付き解説)

【Winautomation実践】Yahoo乗換案内での定期経路調査を自動化してみた③(画像付き解説)


sweeep|請求書AI-OCR

請求書の会計処理を自動化します
請求書AI-OCR「sweeep」

面倒な請求書の会計処理をAIで自動化。100枚をたった3分で処理できます。月末に貯まった請求書を一掃しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です