RPA経験をもとにお役立ち情報発信中!

WinActor 遠隔地から自動実行・リモート実行する方法

RPAネコ(@PRAneko)です!
会社で、RPAツール作成やRPA推進をしてます。

今回はこちらの要望にこたえていきます。

WinActorを遠隔地から実行したい!
東京本社にあるWinActorパソコンを、北海道支店から遠隔操作できないかな?

WinActorを遠隔地から自動実行する方法を4つ紹介します。

リモートデスクトップ

リモートデスクトップは、離れた場所からパソコンを操作できる機能です。Windowsに標準搭載されているので無料で使えます。

リモートデスクトップの機能を用いて、WinActorのインストールされているパソコンを遠隔操作することも可能です。

メリット

  • Windowsに標準搭載されているので無料で使える
  • リモート接続すれば、普通にパソコン操作するのと同じ感覚なので簡単

デメリット

  • WinActor実行中にリモート接続を切ると、エラーが発生してしまう
  • すでに自分がリモート接続してる時に他ユーザがリモート接続してくると、他ユーザに接続がとられてしまい自分の接続は切れてしまう

フローティングライセンス

フローティングライセンスなら、どのパソコンでもWinActorを利用する事が出来ます。

例として、午前は東京本社のパソコンでWinActorを利用して、午後は北海道支店のパソコンで利用する、といった事が可能です。

ファイル格納されたらRPA実行(プチライブラリ)

NTT ATから無料配布されているプチライブラリに以下のようなものがります。

本サンプルシナリオは、「order」フォルダへのシナリオ配置を監視します。
コマンド用シナリオファイルが配置されたことを検知すると、「current」フォルダにコマンド用シナリオファイルを移動し、ライブラリ「01_WinActor制御/02_シナリオ制御/シナリオGoto.ums5」にて該当コマンド用シナリオファイルを実行します。

シナリオの配置を監視してシナリオ実行する常駐型サンプルシナリオ
RPAネコ
RPAネコ

つまり、orderフォルダに置かれたシナリオを自動で実行してくれるプチライブラリだよ!

遠隔地にいてもorderフォルダにシナリオさえ置けば、WinActorが勝手に実行してくれるんだね

※orderフォルダは共有フォルダなどに設定しておこう

メリット

  • 無料で使える
  • ダウンロードするだけで使える

デメリット

  • 実行対象シナリオのシナリオの最後に「シナリオGoto」を配置して、このプチライブラリを呼び出す必要がある

ファイル格納されたらRPA実行(VBSript)

上記のプチライブラリでは、再度プチライブラリを呼び出す「シナリオGoto」を実行対象シナリオのシナリオの最後に配置しなければならない、というデメリットがありました。

ですが、VBScriptで実装することでこのデメリットを解消することができます。

RPAネコ
RPAネコ

今回は、そのVBScriptをつくってみたよ!

仕様

「実行対象」フォルダに置かれたシナリオファイルを自動で実行します。

「実行対象」ファルダ直下に「シナリオファイルと入力ファイルをまとめたフォルダ」を置くとWinActorパソコンにシナリオと入力ファイルを一緒に渡すことができます。

RPA実行が完了すると、シナリオファイル(と入力ファイル)は「実行済」フォルダに格納されます。シナリオファイルの拡張子が間違っている場合は「実行失敗」フォルダに格納されます。

実装方法

1.「実行対象」,「作業用」,「実行失敗」,「実行済」フォルダを作成してください。
作成場所はどこでも構いません。ですが、「実行対象」,「実行失敗」,「実行済」フォルダは共有フォルダにしておくのがオススメです。

2.以下のVBScriptコードをコピーして拡張子「.vbs」で保存してください。こちらも保存場所はどこでも大丈夫です。

以下のVBScriptコード前半の「ファイル、フォルダ設定」の部分のファイルパス、フォルダパスはご自身の環境に合わせたものに変更してください。

Option Explicit
'------------------------------------------'
'ファイル、フォルダ設定
'------------------------------------------'
Const WINACTOR_FILE = """C:\Program Files (x86)\WinActor\WinActor.exe""" 'WinActor実行ファイル
Const TARGET_FOLDER = "R:\RPA\遠隔実行\実行対象"	'実行対象フォルダ
Const WORK_FOLDER   = "C:\RPA\遠隔実行\作業用"		'作業用フォルダ
Const FAIL_FOLDER   = "R:\RPA\遠隔実行\実行失敗"	'実行失敗フォルダ
Const DONE_FOLDER   = "R:\RPA\遠隔実行\実行済"		'実行済フォルダ
'------------------------------------------'

'実行
Call Main()

Sub Main()
   Dim Fso: Set Fso = CreateObject("Scripting.FileSystemObject")
   Dim Shell: Set Shell = WScript.CreateObject("WScript.Shell")
   Dim RegExp: Set RegExp = CreateObject("VBScript.RegExp")
   RegExp.Pattern = "^.*\.ums.{1}$"

   '---------------------'
   '事前チェック
   '---------------------'
   '各種フォルダが存在しない場合は終了する
   With Fso
      If Not (.FolderExists(TARGET_FOLDER) And .FolderExists(WORK_FOLDER) _ 
      And .FolderExists(FAIL_FOLDER) And .FolderExists(DONE_FOLDER)) Then
         MsgBox "必要なフォルダがありません",vbCritical,"エラー"
         Set Fso = Nothing
         Set RegExp = Nothing
         Set Shell = Nothing
         WScript.Quit
      End If
   End With

   '---------------------'
   'RPA実行
   '---------------------'
   'シナリオファイルを探して実行
	Call RunRPA_TgtFile(Fso,Shell,RegExp)
	
	WScript.Sleep 5000	'待機
	
	'シナリオが格納されたサブフォルダを探して実行
	'(シナリオと一緒に入力ファイルをWinActorパソコンに渡したい時のための関数)
	Call RunRPA_TgtSubFolder(Fso,Shell,RegExp)	

   '解放
   Set Fso = Nothing
   Set RegExp = Nothing
   Set Shell = Nothing
   WScript.Quit

End Sub

Sub RunRPA_TgtFile(Fso,Shell,RegExp)
   Dim File			'ファイル検索用
   Dim tgtUmsPath		'実行シナリオ(ums?)ファイルパス
   Dim tgtUmsName		'実行シナリオ(ums?)ファイル名
   
   'シナリオ(ums?)ファイルがあれば作業用フォルダに移動
   For Each File In Fso.GetFolder(TARGET_FOLDER).Files
      tgtUmsName = File.Name
      If RegExp.Test(File.Path) Then
         tgtUmsPath = WORK_FOLDER & "\" & tgtUmsName
         Fso.MoveFile File.Path, tgtUmsPath
         
         'シナリオファイルがあればRPA実行し、実行済フォルダに移動
         Shell.Run WINACTOR_FILE & " -f " & tgtUmsPath & " -r -e", 1, True
         Fso.MoveFile tgtUmsPath, DONE_FOLDER & "\" & tgtUmsName
         
         Exit Sub
      Else
         'シナリオファイルが無ければ、実行失敗フォルダに移動
         Fso.MoveFile TARGET_FOLDER & "\" & tgtUmsName, FAIL_FOLDER & "\" & tgtUmsName
      End If

   Next

End Sub

Sub RunRPA_TgtSubFolder(Fso,Shell,RegExp)
   Dim SubFolder		'サブフォルダ検索用
   Dim File			'ファイル検索用
   Dim tgtFolderName		'実行対象フォルダ名
   Dim tgtUmsPath		'実行シナリオ(ums?)ファイルパス

   For Each SubFolder In Fso.GetFolder(TARGET_FOLDER).SubFolders
      tgtFolderName = SubFolder.Name

      '作業用フォルダ直下に実行対象フォルダを移動する
      Fso.MoveFolder SubFolder.Path, WORK_FOLDER & "\"

      'シナリオ(ums?)ファイルがあるか確認
      For Each File In Fso.GetFolder(WORK_FOLDER & "\" & tgtFolderName).Files
         If RegExp.Test(File.Path) Then 
            tgtUmsPath = File.Path
            Exit For
         End If
      Next

      'シナリオファイルが無ければ、実行失敗フォルダに移動
      If tgtUmsPath = "" Then
         Fso.MoveFolder WORK_FOLDER & "\" & tgtFolderName,  FAIL_FOLDER & "\"
      'シナリオファイルがあればRPA実行し、実行済フォルダに移動
      Else
         Shell.Run WINACTOR_FILE & " -f " & tgtUmsPath & " -r -e", 1, True
         Fso.MoveFolder WORK_FOLDER & "\" & tgtFolderName, DONE_FOLDER & "\"
      End If
      Exit For
   Next

End Sub

3.タスクスケジューラで定期的(1~10分毎)にこのVBScriptを実行するように設定してください。

以上で、RPAをリモート実行する仕組みができました。

▼本気でWinActorをマスターしたいならこちらをチェック

  • WinActorの使い方 入門 6つだけ覚えればOK!(詳細
  • WinActorノードやライブラリの使い方 一覧(詳細
  • WinActor開発スキルアップ記事まとめ(詳細
  • WinActor勉強方法 独学から研修まで幅広くご紹介(詳細

Digiprove sealCopyright secured by Digiprove © 2020
タイトルとURLをコピーしました