
【WinActor】コマンド実行、スクリプト実行、Python実行ノードを使ってみよう!
こんにちは。
WinActorの扱いにも慣れてきた頃にぜひ挑戦していただきたいのが、今回のテーマである「○○実行」系ノードたちです。
シナリオ開発を進めていくうちに、WinActorに標準搭載されている部品だけでは、したい動作を一発でできないことも出てきます。そんなときには「○○実行」系ノードを使って理想のパーツを作っちゃいましょう🎵
今回ご紹介するのはノードパレットにある「コマンド実行」「スクリプト実行」「Python実行」の3つです。
1.コマンド実行
コマンド実行では、指定したコマンドを実行します。また、コマンドの出力を変数に取得することができます。
コマンド実行は、コマンドを実行して、その結果を取得したい場面や、操作対象となるアプリケーションをシナリオ実行中に起動したい場合に使用します。
コマンドはコンピュータへの命令のことです。アプリケーションを起動したり、ファイルを作成したりと、できることは多岐に渡ります。
コマンドを実行できる環境はいろいろありますが、例えば「コマンドプロンプト」なら触ったことはなくても画面を見たことはあるのではないでしょうか。この画面で入力しているのが「コマンド」です。

「ipconfig」はPCのネットワーク設定を確認するコマンド
コマンドはコマンドプロンプト以外に「PowerShell」や「Terminal」などでも実行できますが、WinActorの「コマンド実行」ノードではこのような実行環境を開かずともにコマンドを実行することができます。

図2において、[コマンド]に入力しているパスは「Notepad.exe」、つまりメモ帳アプリです。[オプション]にはメモ帳アプリで開きたいファイルのパスを設定しています。
[オプション]を設定せずに(「値⇒」と設定)実行すると、真っ新なメモ帳が開きます。
他にもPDFファイルやExcelファイルを開いたり、PCにインストールされているシステムやアプリケーションを起動させることができます。
またWinActorのシナリオ開発において「コマンド実行」はバッチファイルの実行にもよく使われます。実行したいコマンドをテキストファイルに記述しておき、バッチファイルとして保存しておくと、ファイルを開くアクションをするだけで中に書かれたコマンドを実行することができます。

テキストエディタで作成して拡張子を「.bat」に変更して完成
コマンドの書き方については今回の話の趣旨から逸れてしまうので、詳しいことは割愛しますが「ファイル準備.bat」には下記の内容を記述しています。
シナリオを動かすために必要なExcelファイル下準備を、コマンドで実行できるようにしてあります。
📚 図3のコマンドの内容(とてもざっくり)
1行目:現在のフォルダの場所を認識
2行目:formatフォルダの「交通費一覧.xlsx」を未処理フォルダへコピー
3行目:処理済みフォルダにある「交通費一覧.xlsx」を削除
バッチファイルの実行にも「コマンド実行」ノードを使うことができます。

バッチファイルを使うメリットは、本来3つのコマンドを実行するためには「コマンド実行」ノードも3つ設定する必要がありますが、テキストに記述しておくことで、3つすべてを1回のアクションで実行できるという点です。
また、バッチファイルにしておくことで、手動でもコマンドを簡単に実行できるようになります。
ファイルを開くアクション(ファイルのアイコンをダブルクリックするなど)をするだけなので、手動でも実行したいときはバッチファイルにしておくと便利です。
今回はアプリケーションの起動について取り上げましたが、ファイルのコピーや移動など、コマンドも多くの種類があります。「コマンド実行」ノードでぜひ試してみてください!
おまけ:copyなどの内部コマンドを実行するとき
copy、moveといった内部コマンド(OS起動時にメモリに読み込まれるコマンドのこと)を実行したい場合は、プロパティの設定が少し異なります。
例えば、さきほどのバッチファイル内で実行しているcopyコマンドを「コマンド実行」ノードに設定する場合は、下記のOK例の様に設定します。

実行するたびにハードディスクなどから呼び出すコマンド
2.スクリプト実行
スクリプト実行は、VBScript で記述したスクリプトをWinActor の中で実行します。スクリプト実行により、WinActor の動作を拡張することができます。
WinActorのノードやライブラリは「VBScript」というプログラミング言語で作られています(Ver7.5.1時点)。ライブラリのプロパティから「スクリプト」タブを開くと、どのようなスクリプトが書かれているかを確認することができます。

「スクリプト実行」はVBScriptを用いてライブラリを自作できるノードです。既存のライブラリのスクリプトを一部を修正したり、一から自分でコードを書いてオリジナルの部品を作り、シナリオ内で使用できるようになります。
💡スクリプトの修正
既存ライブラリのスクリプトは、自分で書き直したり追記することができますが、変更を加えたライブラリの挙動についてはメーカーの保証対象外となることには注意が必要です。自己責任で使用しましょうということですね。
スクリプト実行ノードでは、WinActorとやり取りをするためのパラメータとWinActorの独自関数を使用することができます。この二つを使用することによって、普段使っているライブラリのようにプロパティ画面で変数や値の取得・設定ができたり、ウィンドウ識別の設定が可能になります。
スクリプト実行でノードを自作してみよう
では簡単な内容でノードを自作してみようと思います。今回は、日付と曜日を取得するという内容にします。
日付は実行日の日付を「yyyy/mm/dd」の形式で取得し、曜日は水曜日なら「水」と取得できるようにしました。

「スクリプト」タブへコードを記入します。少し見づらいですが、下の方に記載されている「SetUMSVariable~」の部分がシナリオの変数に値を渡すためのWinActorの独自関数です。
「注釈」タブは任意にはなりますが、記入した内容は「設定タブ」へそのまま反映するので、そのライブラリの説明や設定項目の説明などを記載しておくと分かりやすいです。
「設定」タブはいつものように格納先変数などを設定します。
WinActorの独自関数やパラメータは操作マニュアルに載っていますので、必要に応じてスクリプト内に書き込みます。設定の仕方は慣れるまで難解に感じるかもしれませんが、既存のシナリオのスクリプトも参考にしてみてください。
📝 作ったライブラリは部品として登録しよう
作成したライブラリを選択し、右クリックメニューから「ユーザライブラリに追加」を選択したあと、ライブラリパレットの更新ボタンを押すことで、ライブラリパレットの一番下に追加されます。
登録後は同梱ライブラリと同じように使えるようになりますので、ぜひ部品として登録しておきましょう!
3.Python実行
Python 実行は、Python で記述したスクリプトをWinActor の中で実行します。Python 実行により、WinActor の動作を拡張することができます。
WinActorの既存ライブラリがVBScriptで作成されていることは前述の通りですが、VBScriptの開発元であるMicrosoftは将来的に、VBScriptを非推奨とし、将来的に廃止する方針を発表しています。
今すぐに影響が出るものではないにしろ、WinActorも将来のVBScript廃止を想定し、VBScriptに加えてPythonを利用可能にしていくということをメーカーも発表しています。その第一歩として、Ver.7.5からは「Python実行」ノードが実装されました。
さて、前置きが長くなりましたが「Python実行」についても簡単に触れておきたいと思います。仕組みは「スクリプト実行」のときと同様で、Pythonのコードを設定することでライブラリを自作、使用できるというものです。
スクリプト実行のときのようにパラメータ、WinActor独自関数を入れ込むことで値のやり取りもできるようになっています。
Python実行でノードを自作してみよう
スクリプト実行と同じ動作をするノードを設定してみようと思います。
実行日と曜日を取得する、という内容でしたね。

注釈タブと設定タブは、スクリプト実行のときと同じ表示になるように設定しました。スクリプトタブの内容はPythonという別のプログラミング言語で書かれているため、先ほどとは少し違いますね。実行したときに得られる結果は同じになります。
こちらも一番下の「# 結果を表示」ブロックの「winactor.set_variable~」の部分が、WinActorに値を渡すための独自関数の部分です。スクリプト実行で使用する独自関数とは書き方が少しだけ違うことに注意です。
そして、その他にも「Python実行」ノードを使用するにあたって注意事項がいくつかあります。
「print」「input」といった標準入出力を使用することはできません。
WinActor同梱のPythonを使用する場合は「pandas」などの外部ライブラリを使用することはできません。
※ツール▸オプション▸実行タブで「指定したPythonを利用する」を選び、別のPythonを設定すれば外部ライブラリを使用することができます。
4.おわりに
今回は少し難しい内容になってしまいましたが、いかがでしたでしょうか。プログラミング言語の習得をしなくても扱えるというのがWinActorの良いところなのですが、少し知識があるだけで世界は格段に広がります。
標準搭載ライブラリの扱いに慣れてきた頃こそ、もう一歩踏み出してみることで既存ライブラリへの理解も深まりますので興味のある方はぜひ挑戦してみてください🎵
最後までお読みいただきありがとうございました!
また次回お楽しみに⭐