
みなさん、こんにちは。鈴木です。
今回は、ドラッグ&ドロップ操作の自動化をご紹介したいと思います。
Let's RPA!!
□目次
・Automation 360 ビルドバージョン:9637
1.はじめに
1.ドラッグ&ドロップについて
RPAによる業務の自動化において、さまざまな画面操作を自動化しますが、
ドラッグ&ドロップの操作は、自動化の機会が少ないのではないかと思います。
RPAにおいてはレアな操作かもしれませんが、
いざというときのためにドラッグ&ドロップをどのように自動化か確認しておきましょう!
参考:ドラッグ&ドロップの操作

2.基本設定
1.自動化のポイント
自動化する前にドラッグ&ドロップの動きを細かく確認しましょう。

【移動対象をつかむ】
  ① 移動対象のオブジェクトにマウスカーソルを移動する
  ② 左クリックをクリックした状態のままにする
【目的地で離す】
  ③ 目的地までマウスカーソルを移動する
  ④ 左クリックをクリックしていない状態にする
それでは、この動きをアクションで実現していきましょう。
2.使用するアクションについて
「マウスパッケージ」の「クリック」アクションを2つ使って、
ドラッグ&ドロップを自動化することができます。
先ほど確認したドラッグ&ドロップの動きは、このような設定になります。

設定内容も簡単ですし、難しくなさそうですね!
3.ドラッグ&ドロップを極める
ドラッグ&ドロップの自動化はとても簡単そうなのですが、
実際の業務の自動化で使おうとすると、非常に困ってしまうことがあります。
皆さんはお気づきでしょうか?
1.ドラッグ&ドロップで困ること
☝「マウス位置」の指定方法

 画像のように固定値(X:788、Y:1166)で設定すると、
 「移動対象」や「目的地」がずれた場合、
 正確にドラッグ&ドロップができない可能性があります。
システムの画面やブラウザでスクロールなどがずれるだけでも影響がありそうですね。
2.解決策
固定値で指定するのではなく、毎回座標を取得することで
より安定したドラッグ&ドロップを実現したいと思います。
下記の手順で「移動対象」と「目的地」の座標を取得します。
  ①「キャプチャ」アクションや、「画像認識」パッケージを使い、
   「移動対象」又は「目的地」を右クリックする。
    ※クリック、左クリックすると処理が実行されてしまう場合は、
     右クリック等影響のないイベントを選択してください。
  ②マウスカーソルの座標を取得し、
   「移動対象」又は「目的地」の座標として変数に格納する。
取得した座標は、「クリック」アクションの「マウス位置」に設定します!
3.ボットを作成する
マウスカーソルの座標を取得するアクションはないので、
下記のようなVBScriptで座標を取得します。
- '***************************************
 - 'マウスカーソルの座標取得
 - '***************************************
 - Function GetMousePoint()
 - Dim myPoint, x, y
 - myPoint = API_GetMessagePos
 - x = myPoint(0)
 - y = myPoint(1)
 - GetMousePoint = x & "," & y
 - End Function
 - '************************
 - 'API呼び出し
 - '************************
 - Function API_GetMessagePos()
 - Set Excel = WScript.CreateObject("Excel.Application")
 - Dim ret, strHex, x, y
 - Dim strFunction
 - Const API_STRING = "CALL(""user32"",""GetMessagePos"",""J"")"
 - strFunction = API_STRING
 - ret = Excel.ExecuteExcel4Macro(strFunction)
 - strHex = Right("00000000" & Hex(ret), 8)
 - x = CLng("&H" & Right(strHex, 4))
 - y = CLng("&H" & Left(strHex, 4))
 - API_GetMessagePos = Array(x, y)
 - End Function
 
座標を取得する機能として何度も呼び出したいので、
このVBScriptを実行して結果(座標)を返却するボットを作成しました。
【マウスカーソルの座標を取得するボット】

上記の座標取得ボットを使ってドラッグ&ドロップを実行する
デモボットを作成しました。
【ドラッグ&ドロップ操作のデモボット】

実行している様子はこちらの動画をご覧ください。
4.まとめ
ドラッグ&ドロップ操作の自動化をご紹介しました。
座標の取り方を工夫することで、より良いドラッグ&ドロップができるようになったと思います。
ご覧いただいた動画内では、ドラッグ&ドロップ以外のボット開発のTipsをご紹介していますので、
是非ご覧ください。
またお会いしましょう!それでは!
 
著者紹介
ICT事業本部 技術本部 
先端技術統括部 DXコンサルティング部 デジタルイノベーション課
鈴木 陽介
C#によるシステム開発、POS開発を経てRPAエンジニアに。

