【第55回】ロータス博士のWinActor塾~ファイル一覧 応用編
よし!今回は予定通り「ファイル一覧」ライブラリの有効であろう使い方を伝授するぞ。
このやり方で、特定のファイルを探し出すことができる。
ロータス君には宿題を出していたが、どうかな?
やるにはやったんですけど・・・。
なんか全然うまくいかないんですよね。
実はな、このやり方にはもうひとつだけ必要なライブラリがあっての。
前回それを教え忘れていたんじゃ。
え?それ詐欺じゃないですか!
結構頑張ってたのに!
う、うむ。それはすまん。
じゃがWinActorは常に色々なライブラリの組み合わせでできることを広げていくもの。
自分の知らないライブラリを開拓する良い機会になったのではないかのう。
そう言われると、教えてもらったものしか使わなくなってた気がします。
最初の頃は自分で色々試してはシナリオを破壊してきたんですけどね。
でも今回のは詐欺なので早く教えてください!
すまんて・・・。
では早速そのライブラリ紹介からいってみよう。
お詫びではないが、最後にシナリオの完成形も見せよう。
前回の記事はこちら
ファイル一覧(ファイル数)取得
ライブラリの配置
ライブラリは以下の場所に格納されています。
NTTATライブラリ > 13_ファイル関連 > 04_ファイル一覧
プロパティ設定
ファイル一覧(ファイル数)取得ライブラリの設定はシンプルです。
ファイル数を知りたいフォルダのパスを「フォルダ名」に指定し、結果を格納するための変数を
「ファイル数」に設定すればファイル数が取得できます。
これですよ!僕が欲していたライブラリは!
こんな便利なものがあったんだ。見落としてました。
いろいろと探してみると、使えるライブラリがたくさんあるんじゃ。
何かをしようとして行き詰まったときは、ライブラリを検索してみることも大事じゃな。
さて、材料も揃ったところでシナリオを作ろう。
今回は完成形を最初に見せてしまうが、応用できる内容じゃから
他の使い方を考えてみるのも面白いかもしれんのう。
実践!特定ファイルの操作
これまで学んできたことを活かして、特定のファイルを操作するシナリオを作成してみましょう。
まずは特定のファイルの定義ですが、今回は例として「拡張子が.pngのファイル」とします。
操作に関しては単純に「ファイルを開く」こととします。
ここまで決めてしまえば、目指すべきシナリオの動作は次のようになります。
やりたいこと
あるフォルダを指定したとき、そのフォルダ内にあるファイル全体からpng形式のファイルを探しそのファイルを開く。pngファイルが複数存在した場合は全て開く。
今回例として使用するフォルダは「C:\WinActor塾\ファイル格納先」にあらかじめ準備したものとします。
フォルダ内は次のようになっています。
ではシナリオの例をご紹介します。
シナリオ全体像
変数と初期値
変数は上記の6つを使用します。
「フォルダパス」の初期値に、対象とするフォルダのパス「C:\WinActor塾\ファイル格納先」を
「カウンタ」の初期値に「0」をそれぞれ設定しておきましょう。
ノード詳細
シナリオを上から順に辿り、プロパティ設定の確認と解説をしていきます。
シナリオ開始直後に配置しています。
フォルダ名には初期値(C:\WinActor塾\ファイル格納先)の入っている変数「フォルダパス」を指定しています。
これによって指定フォルダ内のファイルの数が「ファイル数」変数に格納されます。
今回フォルダの中は6つのファイルが存在しているので、この時点で「ファイル数」変数の中身は6となります。
次に繰り返しノードを配置し、ループ処理に入ります。
ループ設定を「回数」にして先ほど取得した「ファイル数」変数を指定します。
これでファイルの数だけ繰り返しが実行されることになります。
今回カウンタは利用しないため空欄にしてください。
繰り返しの中で最初に実行する処理はファイル名の取得です。
ここでの設定のポイントは「カウンタ」です。
前回学習したことを思い出してみましょう。このライブラリのカウンタとはフォルダ内の何番目のファイルかを指定するものでした。そして、カウンタは「0」から数えられるという仕様となっています。
そのためカウンタに指定している「カウンタ」変数には初期値として「0」が格納されています。
これによってフォルダ内の0番(=1つめ)のファイル名が「ファイルパス」変数に取得されます。
ここまででもうファイル名が取得できてしまいました。
あとはこの情報を使って欲しいファイルなのかどうかを判定するだけです。
「ファイルパス」変数にフォルダ内の0番のファイル名が取得できたので
pngファイルかどうかを判定するために取得したファイル名を加工します。
ここでは切り出し元文字列に取得してきた「ファイルパス」を、切り出し文字数に「4」を指定しています。
0番のファイル名が仮に"C:\WinActor塾\ファイル格納先\Microsoft Excel ワークシートA.xlsx"だった場合を考えてみましょう。
この場合、後方4文字は次の赤色の部分になります。
C:\WinActor塾\ファイル格納先\Microsoft Excel ワークシートA.xlsx
切り出した後方4文字は、切り出し文字に設定した変数へ格納されます。
今回の例では「拡張子」という名前の変数に結果を格納しています。
もし取得されたファイル名がお目当てのpngファイルだった場合は
C:\WinActor塾\ファイル格納先\ハカソ.png
のようになり「拡張子」変数には「.png」が格納されることになります。
目的のファイルかどうかを判定するために、ファイル名を加工して取り出した「拡張子」変数を用いて分岐します。
条件式は図のように「拡張子」等しい「.png」と設定しましょう。
これで「拡張子」変数の中が「.png」の時だけTrueに遷移し、そのファイルがpng形式であるかどうかが判定できます。
今回は、pngファイルが存在した場合は開くというシナリオ内容でしたので
分岐の「True」側に「ファイルと関連づいているアプリ起動」ノードを配置し、
パスに「ファイルパス」変数を指定して開きましょう。
分岐を抜けたあと、ループ終了直前に「カウントアップ」ノードを配置します。
この例ではループカウンタを使用していませんので、次のループのために手動でカウンタを加算させる必要があります。
計算結果に「カウンタ」変数を指定し、加算値は1とします。
これによって最初のループで0だったカウンタが1になり、次のループに入ります。
「0番目」のファイル名を取得していた処理が「1番目」のファイル名を取得する処理に変わるということですね。
これがファイル数分ループされることで0~5番目(合計6つ)のファイルに対して処理が実行されることになります。
この例では全てのpngファイルに対して「開く」を実行する必要があるので、途中でループを抜けることはありません。
これでシナリオが完成しました。実行して確認してみましょう。
実行結果
想定通りファイル数分の6回ループしそれぞれに処理が実行されました。
最終的にpngファイルである「ハカソ.png」だけが開かれている状態で終了しています。
・・・。
まあ、成功じゃよ。あまり嬉しくない画面ではあるが。
いやーでもすごいですね。
最初は使いにくいと思ってたファイル一覧のライブラリも
ループや分岐と組み合わせることでこんなに使えるシナリオになるなんて!
これがWinActorの面白いところじゃな!
いろいろな組み合わせで可能性が広がるんじゃ。知れば知るほどできることが増えてゆく。
塾ではこれからも色々な機能や考え方を紹介していくからよろしく頼むぞ!
今回はきれいに締まりましたね!博士!
今かなりイイ感じじゃったのに
お主がそういうことを言うから締まらなくなるんじゃぞ・・・。
関連記事こちらの記事も合わせてどうぞ。
2024.11.05
【第105回】ロータス博士のWinActor塾~新しい画像マッチング画面
2024.09.27
【第104回】ロータス博士のWinActor塾~ガイド利用シナリオ(作成編)
2024.09.10