WinActorシナリオ作成の基礎 複数のファイルを連続でダウンロードし、一括で印刷する

本記事では当社内の業務で利用する際に作成したWinActorのシナリオに基づき説明したいと思います。当社経理部メンバーに、WinActorでどのような作業を自動化すると便利かヒヤリングしたところ、いくつか意見がありました。
今回はその中から「複数のファイルをダウンロードし、一括で印刷する」というシナリオ作成を行います。

シナリオの流れ

想定する業務は具体的に、毎月の全社員の勤務表をダウンロードし印刷する、というものです。

シナリオの流れ

1.システムにログインする
2.社員リストをダウンロードする
3.社員リストをもとに、勤務表をダウンロードする
4.ダウンロードしたファイルを一括で印刷する
5.ファイルを削除する

社員リスト及び勤務表は、他の記事でも利用している当社のクラウドERP MA-EYESからダウンロードします。
1は利用するシステムによって手順が異なりますので、シナリオの説明は2から行います。

前提として、MA-EYESからは全員分の勤務表を一括ではダウンロードできず、社員IDごとに繰り返しダウンロード操作をする必要があります。その際、社員コードのリストが必要になります。
リストはどこかのフォルダに置いておいて、そちらから読み込むという方法でもいいのですが、その場合入退社がある度にリストを更新しなくてはいけません。
その手間を省くために、シナリオの最初で最新の社員コードをダウンロードする自動化から開始します。

社員リストのダウンロードを行った状態から説明を始めます。
過去の記事でもご紹介したとおり、ライブラリ「Excelファイル名取得」を用い、ダウンロードしたファイルの名前を取得しておきます。

変数の初期値を設定します。

勤務表をダウンロードする

続いて、社員リストを用いて勤務表をダウンロードします。
操作手順は利用するシステムの仕様により異なると思いますが、今回は下記のシナリオで実現します。

シナリオの流れを説明します。

・「Excel操作(値の取得2)」で、社員コードを読み取ります

・「分岐」で、社員コードをすべて読み込んだか確認します

・コードがあれば、社員コードを「クリップボード」に設定し、各システムの操作にて、当該社員コードの勤務表をダウンロードします

・「カウントアップ」で次回のExcel操作で読み込むセルを次の行にします

・繰り返しで最初に戻ります

・すべてのダウンロードが終わったら(読み込む社員コードが無くなったら)繰り返しを終了し、社員リストを閉じて削除します

上記手順に従ってシナリオを作成していきます。

1つのファイルをダウンロードする

最初は1ファイルだけダウンロードするというシナリオを作り、後から付加していくとわかりやすいです。
下記がそのシナリオです。

「Excel操作(値の取得2)」プロパティを入力します。

変数の初期値を設定します。今回ダウンロードしたファイルのデータは3行目から始まるので、初期値を「3」とします。

ノード「クリップボード」に変数「社員コード」を設定します。

画像マッチングや自動記録、エミュレーションを用いシステムにコードを入力し、勤務表をダウンロードします。
※こちらの設定方法の説明は省略します。お使いのシステムのやり方で試してください。

勤務表のダウンロードが完了したら、「Excel操作(保存なしで閉じる)」で社員リストを閉じて、「ファイル削除」で削除します。

繰り返しと分岐を挿入する

ダウンロードしたい勤務表は複数枚ありますので、同じ動作を繰り返さなくてはいけません。
「繰り返し」だけでも、社員リストの最終行を取得することで実現可能ですが、WinActorの研修でも習うオーソドックスな形式として、繰り返しと分岐を用います。

繰り返し」「分岐」「繰り返し終了」を設置します。

「繰り返し」は無限ループの設定を行います。無限ループにするには設定はいらないのですが、「設定をしないという設定をする必要がある」とでもいえばいいでしょうか、条件式を一度開かないとシナリオ実行時に警告が出ますので、開いておきます。

「分岐」の条件式設定は下記のとおりです。
変数:社員リストが空欄でない場合=データが入っている場合、trueに進みます。

「繰り返し終了」には設定項目はありません。

先程作っておいたシナリオと繰り返し・分岐のシナリオを組み合わせます。
「Excel操作(値の取得2)」で取得したファイル名を利用して分岐しますので、「分岐」「繰り返し」の間に置きます。
「Excel操作(保存なしで閉じる)」「ファイル削除」は繰り返しが終了した後に置き、「クリップボード」とダウンロード操作は分岐のtrueの中に入れます。最後に「カウントアップ」を、勤務表をダウンロードした後に挿入します。

「カウントアップ」の設定で、行を繰り上げるようにしておきます。

これで、ファイルのダウンロードまでが完了しました。

複数のファイルを一括で印刷する

続いてダウンロードしたファイルを一括で印刷します。
このような手順で自動化をすることにしました。

・ダウンロードフォルダを開く
・エクスプローラーを最大化する
・ファイルをすべて選択する
・印刷する

ダウンロードフォルダを開く

ライブラリ「Exploreでファイルを開く」を用います。
名前は「“ファイル”を開く」ですが、”フォルダ”を指定すればフォルダが開きますので、ダウンロードフォルダを設定します。変数でも値でも構いません。

印刷操作をエミュレーションで行う

フォルダは下記のように、どのようなサイズでどの場所に開くかわかりませんので、最初に最大化します。

最大化は「Windowsキー+↑」です。
フォルダが開いた状態のまま、クリックをしなくてOKです。

最大化できたらフォルダ内のどこかを一度クリックした後で、「ctrl+a」を押し、ファイルを全選択します。

「右クリック」、ポインタをファイル上においた上で「P」とキー操作することで、印刷が開始されます。ダウンロードしたファイルが1つでも印刷できるように、1ファイル目の位置にポインタを置くと良いです。

なお、一括で印刷をするので、勤務表以外のファイルはダウンロードフォルダにない状態でなくてはいけません。そもそもExcelとword等、異なる種類のファイルが混在する場合は一括で印刷ができないのがWindowsの仕様のようです。(印刷がメニューに表示されない)

また、この形で印刷すると、印刷設定が出来ずExcelの1シート目のみが印刷されるので、複数シートを印刷したい場合は、印刷ダイアログを開いて設定する必要があります。
そういったこともあり、このように一括で印刷するのではなく以前紹介したように1ファイル毎に印刷したほうが安定すると思いますが、今回は別の方法の紹介ということで、一括印刷にて自動化を実現しています。

ファイルを削除し、終了する

印刷が終わったファイルは削除をおこないます。
こちらも、先程同様にエミュレーションを用います。

勤務表の保存フォルダは開いたままになっているので、再び「ctrl+a」、「右クリック」、最初のファイルにポインタを置いた状態で「d」と記録します。最後に右上の×を押してウィンドウを閉じます。
なお、印刷をすべて実行し終える時間を考慮する必要があるので、削除の前に待機やウィンドウ状態の監視を適宜挟んでください。

シナリオ全体像と動画

実行してみて、WinActorの画面が邪魔になることがあったので、追加でシナリオの先頭にライブラリ「WinActorウィンドウを閉じる」を追加しました。
下記が全体像です。



 

動画も掲載します。何十枚も勤務表をダウンロード・印刷すると長くなりますので、4回の繰り返しにしています。

「WinActorシナリオ作成の基礎」の記事では、複数回にわたりシステムからのデータダウンロードからの印刷、フォルダ保存など、様々なパターンでシナリオ作成をご紹介しております。これらの記事が皆様のシナリオ作成の一助となれば幸いです。