Winautomation:取得した情報をアウトプットに書き込む

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

前回は取得した情報を整形し、各ルートごとに分割しました。
今回は取得した情報をアウトプットに書き込んでいきます。

アウトプットファイルの用意

書き込む前に、最初に用意したテンプレートファイルをコピーして書き込み用ファイルを用意します。

アウトプットファイル作成Functionとアウトプットファイル書込Functionを作成し下の画像の順番に処理されるように配置します。

変数設定のFunctionでアウトプットファイルのパスの変数を設定しておきます。
(画像ではパスにダブルクォーテーションが入っていますが不要です。)

また、アウトプットの出力先のパスも設定しておきます。

アウトプットファイル作成のFunctionに[Copy File(s)]のアクションを置きます。
テンプレートファイルをアウトプット出力先のパスへコピーします。

コピーしたらファイル名を変更しておきます。
[Rename File(s)]のアクションを使用します。

これでアウトプットへ書き込む用意ができました。

アウトプットファイルへの書き込み

アウトプットファイル書込のFunctionで[Launch Exccel]のアクションを置き、Excelを展開します。
%RenamedFiles%はリスト型の配列となっているので、要素が1つの場合は%RenamedFiles[0]%とします。

出発駅、到着駅、URLを書き込みます。

[Write to Excel Worksheet]のアクションでExcelへの書き込みを行います。
書き込む変数は、出発駅の変数の%FromInput%で、C2セルを固定で指定しています。

同様に、到着駅の変数の%ToInput%をC3セルへ、URLの変数の%WebPageProperty%をC6セルへ書き込むように設定します。

次に、%DataFromWebPage%の、各ルートの所要時間、片道料金、定期代、出発駅、到着駅
を書き込んでいきます。

ルート数分の回数をループするLoopアクションを置きます。

ループ内に、アウトプットファイルの11行目に所要時間を書き込む[Write to Excel Worksheet]を置きます。

書き込むセルの指定方法ですが、列(Column)についてはA,Bなどの列番号だけでなく、インデックス番号で指定することもできます。ループ内で書き込む列を順番に右にずらしていくような場合にはインデックス番号で指定するとよいです。
今回はC列から書き込むので%LoopIndex+3%としました。

同様に片道料金、定期代、出発駅、到着駅も設定していきます。

設定したらデバッグして確認してみます。

ここまでは問題なく書き込めていますね。
次は経由駅ですが、出発駅と到着駅はすでに書きめているので、各ルートの最初と最後の駅は処理をスキップして書き込んでいきます。

インデックスを1~3として3回ループするLoopアクションを置きます。
インデックスの始まりを1としているのは、出発駅を含めないためです。
今回は経路駅は最大3駅まで記載します。

Ifアクションをループ内に挿入します。
各ルートの到着駅はここでは書き込みしないため、リストの最後は[Write to Excel Worksheet]のアクションを通らないようにします。

Ifアクション内に[Write to Excel Worksheet]のアクションを挿入します。
書き込み行は2行ずつ下にずれるため、LoopIndexを用いて式で表しました。

同様にルート2とルート3の書き込みも設定します。

次は経路を書き込む処理を作成します。
経路は最大4経路まで書き込むので、0~3の4回ループするLoopアクションを置きます。

駅リストを書き込んだ場合と同様に、Ifアクションをループ内に配置します。
このIfアクションは、経路リストの要素数より%LoopIndex%が超えてしまっていた場合にエラーがでてしまうのを回避するために置きました。
例:%AccessListRoute1%の要素すうが3つの場合、%AccessListRoute1[3]%は存在せず、呼び出そうとするとエラーとなる。

[Write to Excel Worksheet]のアクションを設定します。
駅リストで使用していたものをコピーして、経路リストに合うように修正しています。

同様にルート2とルート3の処理も作成します。

処理が作成できたら、デバッグして結果を確認します。

上の画像のようになっていればOKです。
残りはExcelの8~10行目の情報ですが、その前に全体の処理を一通り作成します。

終了処理

終了処理を作成していきます。

終了処理のFunctionを用意し、最後に実行されるようにします。

終了処理としては、アウトプットのExcelファイルの保存とWeb BrowserのCloseを置きました。

また処理が終了したことが分かりやすいように、終了メッセージを出す[Display Message]を置きました。

インプットダイアログの作成

出発駅、到着駅を入力できるインプットダイアログを作成していきます。
今回は[Custom Dialog]を使います。アクションを置いたら[Open Designer]からダイアログを編集します。

出発駅と到着駅のテキストボックスを作ります。
Custom Dialog Designer画面右側にあるコンポーネントを左側にドラッグ&ドロップすることで
ダイアログにコンポーネントを追加できます。

まずはInputをドラッグ&ドロップし、出発駅と到着駅を入力するテキストボックスを追加しました。

コンポーネントをクリックするとプロパティが表示されます。
[Label]に表示するテキストを入れ、[ID/Name]にはそれぞれ「From」「To」を入れました。
また[required]にチェックを入れ、必須入力項目としています。

Buttonsからコントロールをドラッグ&ドロップし、[OK]と[Cancel]ボタンを追加します。

 

プロパティの[Button Name]でボタンの表示を変更します。

また、[Dialog Properties]タブで[Accept Button]を「OK」に、[Cancel Button]を「Cancel」に設定しておきます。
[Cancel Button]の設定をしておかないと、必須項目を入力しないとCancelボタンが押せなくなってしまいます。
(ここの設定でどう変わるか詳しくわかっていないですが、OK,Cancelボタンがある場合はとりあえず設定しておいたほうがいいと思われます。)

ダイアログをCancelボタンで閉じた場合や、右上の✖︎ボタンで閉じた場合の処理を作成します。

Ifアクションで上の画像のように設定しますが、少しややこしいです。
まずIfアクションで複数条件を書きたいときですが、[First Operand]に%で囲った間に複数条件を書き、
[Operator]は「=」、[Second Operand]は「True」とします。

2つの条件式を「||」で囲んでいますが、これはOrを意味しています。
1つ目の条件は最後に押されたボタンが「Cancel」ボタンであった時で、
2つ目の条件はダイアログが強制に閉じられた場合です。

条件に合致した場合にはプロセスをストップします。
[Stop Process]を置きます。

次にOKボタンを押した場合の処理を作ります。
OKボタンを押した場合には、出発駅と到着駅に値を代入します。

変数はすでに定義されているので、出発駅と到着駅を設定していた[Set Variable]のアクションのプロパティを開きます。

固定値を代入していた部分をダイアログの結果に変更します。

CustomDialogの結果はデフォルトでは%CustomDialogResults%に入っています。
%CustomDialogResults[0]%のようにインデックスでも取得できますが、インデックスの代わりにコントロールのIDを指定することでも取得できます。出発駅と到着駅のIDには「From」「To」を設定したので、%CustomDialogResults[“From”]%、%CustomDialogResults[“To”]%としました。

ここまで設定したらデバッグして動きをテストしてみましょう。

出発駅を「渋谷」、到着駅を「東京」として動かしてみました。

問題なく取得できていますね。

次回は残りの申請経路の判定の処理を作成します。

関連記事

はじめまして、Shintaroです。 Winautomationでプロセスを作成するのが好きなエンジニアです。 今回はWinautomationでYahoo!路線情報の乗換案内を利用した定期経路調査ロボット(プロセス)を作ったので、[…]

関連記事

前回に引き続き、Winautomationで作成したロボットについて紹介していきます。 前回は乗換案内から経路の所要時間や片道料金などを取得しました。 今回は取得した文字列から不要な文字を削除していきます。 取得した文字の[…]

請求書の受け取りはsweeepで自動化

【AI請求書処理】従来の請求書OCRでは対応できない非定型帳票や

自動会計仕訳も、sweeepなら対応可能!最短で即日導入、

面倒な設定不要。手軽に導入して請求業務を効率化。