※ 2019/11/15 記事の内容を更新しました。
今回は、ちょっとだけプログラミングの技術が必要だけども
通常のノードと組み合わせると、まさに何でもできるようになってしまう便利ノード、その名も「スクリプト実行」を取り上げてみます。
「スクリプト」欄に記述できるのは、基本的にはvbscriptなのですが、
実際に書いたスクリプトがvbscriptとして実行される前に
WinActor側で特定キーワードを検査、置換してWinActor側の変数などと連携できる様にする仕組みを提供してくれています。
ただ一応、完全に独自でスクリプトを書き始めてしまう前にすでに公開されているライブラリはないか?調べてみることをお勧めします。
[WinActor]スクリプト実行ライブラリに2019/11/15時点で公開されているライブラリ類と私が過去に書いたことのあるスクリプト実行コードを纏めておきました。
NTTATさんのプチライブラリはたまに眺めてみたらいいですよ?
一部、特殊な書き方をするとWinActor内部で自動的に置換されたりWinActor環境の独自関数が使えたりする部分があるので、改めてそこの機能を纏めておきます。
1.値⇒と変数が設定可能なプロパティ入力欄
!プロパティ!
!で挟まれた部分がラベルになって値⇒と変数が指定可能な入力ボックスができます。
『値⇒』で指定された場合は、直接その値がvbscriptに挿入される形で実行されますが、
変数を指定した場合は、その「変数の現在値」が挿入される形でスクリプトが実行されます。
処理の引数(INPUT)として使うイメージになっています。
2.変数のみ設定可能なプロパティ入力欄
$サンプル$
$で挟まれた部分がラベルになって変数の設定のみ可能な入力ボックスができます。
プルダウンに『値⇒』が出てきません。
スクリプトに指定した変数名がそのまま挿入される形で実行されます。
つまり、戻り値(OUTPUT)として使うイメージになっています。
そのままでは、変数名がスクリプトに挿入されるだけで変数の現在値は更新されないのでWinActor独自関数と組み合わせて使うことになります。
SetUMSVariable(変数名, 値)
⇒ 変数名の値を更新します。
SetUMSVariable($サンプル$, resultVal)
3.規定の選択しをプルダウンで選ばせるプロパティ入力欄
!ラベル|選択肢1,選択肢2,選択肢3!
!で括ってラベルの後ろに|(パイプ)とカンマ区切りで選択肢を列挙することで選択式のプロパティ欄を作ることができます。
使いまわせるスクリプトでオプション指定で処理の内容を変えたい時に便利でしょう。
引数(INPUT)としての利用イメージになるかと思います。
選択された項目名がそのままスクリプトコードの中に置換挿入される形で実行されます。
4.ウィンドウ選択のプロパティ欄生成
@ウィンドウ識別名@
@で括るとウィンドウ選択のプロパティ入力欄になります。
@でどんな名前を指定してもウィンドウ選択欄のラベル名は『ウィンドウ識別名』になります。
選択した「ウィンドウ識別ルール」のウィンドウ識別名がスクリプトに置換挿入されます。
そんな名前とってどうするねんって話ですが、これもWinActor独自関数と組み合わせたりします。
GetUMSWindowTitle (ウィンドウ識別名)
⇒ 戻り値:ウィンドウタイトル
GetUMSWindowHandle (ウィンドウ識別名)
⇒ 戻り値:ウィンドウハンドル
ShowUMSHighlight (ウィンドウハンドル)
⇒ 指定ウィンドウ枠ハイライト 表示関数
戻り値:成功 ⇒ True、失敗 ⇒ False
title = GetUMSWindowTitle(@ウィンドウ識別名@) hwnd = GetUMSWindowHandle(@ウィンドウ識別名@) flag = ShowUMSHighlight(hwnd)
わんすけでの活用例はこちら。
[WinActor]UIAutomationをWinActorに組み込む
5.プロパティ入力欄を介さずに変数を取得・更新する。
処理の内容が固定的で、変数一覧の使いまわしとかも考えないのであれば、WinActor独自関数を使って直接データの入出力をやってしまうという手もあります。
GetUMSVariable(変数名)
⇒ 変数読み込み関数
戻り値:変数の現在値
SetUMSVariable(変数名, 値)
⇒ 変数書き込み関数
戻り値:設定した値
テストっていう変数を用意したとしたら、これで変数の取得と更新ができる。
' 変数「テスト」の現在値を取得 test = GetUMSVariable("テスト") newVal = "新しい値" ' 変数「テスト」の現在値を更新 SetUMSVariable "テスト", newVal
プロパティ設定欄は設定タブに表示されない。
変数一覧を更新する時の「使用中だからダメ」警告も出ないので注意。
付箋追加の機能とか使ってしっかり補足書きしておかないと迷惑かも?
WinActor導入したら、事務所の見えるところに参考書籍置いときましょう!
興味を持った方には、貸し出してあげて、RPA仲間を増やしましょう。
以下、仕様まとめ
パラメータ
スクリプト内に、以下のパラメータを記述することで設定タブに入力ボックスを作ることができます。
パラメータ | 内容 |
---|---|
!パラメータ名! | 設定タブに「!」で括った間にある文字のパラメータ入力欄ができます。 この場合は、[値⇒]を含む値と変数が選択できる入力欄が表示されます。 |
!パラメータ|項目1,項目2,項目3! | 「|」(パイプ Shift押しながら\キー)の後ろに項目をカンマ(,)区切りで登録することでそれらに選択項目を限定したパラメータ入力欄にすることもできます。 |
$パラメータ名$ | 設定タブに「$」で括った間にある文字のパラメータ入力欄ができます。 この場合は、変数名のみが選択可能なパラメータ入力欄が表示されます。 |
@パラメータ名@ | 設定タブにウィンドウ識別名が設定可能なパラメータを表示します。 このパラメータは、スクリプトコード内に1つのみという制約があります。 |
WinActor 独自関数
「スクリプト実行」のvbscriptには以下の関数が事前に定義されており、これらを使ってWinActorの変数にデータの出し入れをすることができます。
関数(引数) | 戻り値 | 内容 |
---|---|---|
GetUMSVariable(変数名) | 文字列(変数値) | 変数読み込み関数 |
SetUMSVariable(変数名, 値) | 文字列(設定した値) | 変数書き込み関数 |
GetUMSWindowTitle(ウィンドウ識別名) | 文字列(ウィンドウタイトル) | ウィンドウタイトル取得関数 |
GetUMSWindowHandle(ウィンドウ識別名) | 文字列(ウィンドウハンドル) | ウィンドウハンドル取得関数 |
ShowUMSHighlight(ウィンドウハンドル) | 真偽値(成功時:true、失敗時:false) | 指定ウィンドウ枠ハイライト表示関数 |
おまけ
試しに、スクリプトタブのテキストエリアにこれを張り付けてみましょう。
Dim msg msg = !メッセージ! msg = msg & "、・・・バカな!" SetUMSVariable $セリフ$, msg
ほんで、「設定」タブを開いてみると・・・。
!メッセージ! と $セリフ$ っていうキーワードがパラメータになってフォーム生成されてますね。
これで、メッセージに「そんな、」って入れたら
文字列の後ろに「・・・バカな!」って追加して変数「セリフ」に設定する
アホなスクリプト実行アクションが完成しました。
試しに待機ボックスで「セリフ」の内容を表示してみましょう。
はい、すると・・・?
すこしExcelのVBAとか読める方ならvbscriptを少し調べて頂ければ
このスクリプト実行ステージを使ってまだライブラリに実装されていない機能を自作できる訳ですね。
プログラミングが苦手だーっていう方には、VBSめーかーというVBS生成できるページもご用意してます。
ぜひ、お立ち寄りください。