みなさんこんにちは。前田です。
みなさんは巷でこんな入力を行うシステムを見たことがありませんか?
このようなカレンダー入力の操作は自動化できるのでしょうか?できる場合どのように実施すればいいのでしょうか?
一緒に進めながら、ご紹介していこうと思います。
Automation 360(A2019) ビルドバージョン:8145
□目次
②対象の日付を、カレンダーの中を探して年月を合わせて日付を選択する
はじめに
1.カレンダー入力について
まずは今回操作するカレンダー入力について説明していきます。
今回のカレンダー入力欄は、日付を直接YYYY/MM/DD形式で入力することも、
カレンダーから入力することもできる日付入力フォームとなっています。
2.自動化の方法について
RPAで自動化を行う際に大事なのは、「ロボットにとって簡単な作業か?」ということです。
人間は単調な繰り返し作業は時間もかかりミスが多くなりがちですが、RPAは単調な繰り返し作業が得意です。
逆に、繰り返しの必要がなく、かつ複雑な作業は苦手です。
ですが、ロボットにとって簡単な作業と人間にとって簡単な作業は少し異なります。
今回で言うと、
①CSVなどから取得した日付をそのまま入力する ... RPAにとってはお手のもの!大得意です。
②取得した日付と同じ日付を、カレンダーの中を探して年月を合わせて日付を選択する ... ちょっと苦手。
といった風に、RPAにも向き不向きがあるのです。
今回は操作方法のご紹介ということで、両方のやり方をご紹介しますが、
実際の業務を自動化する際は、RPAにとって得意なやり方を選択し、ソースを簡潔に・正確性を高めたロボットを作る必要があります。
実際の操作
では、実際にカレンダー入力欄に、「2020/10/31」を入力するボットを作ってみましょう。
まずは①の方法で日付を入力していきます。
①日付をそのまま入力する
こちらは特に難しいところはありません。通常のテキストボックスなどのキャプチャと同様に、
オブジェクトをキャプチャして、入力するだけでOKです!
①「オブジェクトをキャプチャ」ボタンをクリックします。
②対象のカレンダー入力欄の上にマウスを移動し、赤い枠で認識されたらクリックします。
③プレビュー画面で正しくキャプチャされているか確認できたら、アクション「テキストを設定」を選択し、
「キーボード操作」を選択して入力欄に対象の日付を入力します。
実行結果はこのようになっています。
②対象の日付を、カレンダーの中を探して年月を合わせて日付を選択する
では、RPAが苦手な②の処理は、どのようにして実現していけばいいのでしょうか。
仕様を確認してから、ステップ毎に解説していきます。
まずは、今回のカレンダー入力の仕様について確認したいと思います。
仕様1...カレンダーを押下すると当月のカレンダーが表示される
仕様2...カレンダー入力欄に値が入っている場合、カレンダーを押下するとその入力値の年月のカレンダーが表示される
仕様3...上部の「◀▶」を押下すると一ヶ月ずつカレンダーが移動する
その他にも仕様はありますが、今回は上記の3つの仕様を踏まえて実現していきたいと思います。
それでは、手順を以下の5つのステップに分けて説明していきます。
ステップ1:カレンダーを押下し、表示された年月を取得する
ステップ2:取得した年月から「年」の数値と「月」の数値を抽出する
ステップ3:取得した年月と入力する年月の差月数(クリック数)の取得
ステップ4:クリック回数とクリック場所を使用して、カレンダー表示年月を入力年月に合わせる
ステップ5:入力対象の日付を選択する
ステップ1:カレンダーを押下し、表示された年月を取得する
まずは、基準となるカレンダーの年月を設定するために、カレンダーボタンを押下して表示された年月の値を取得します。
①カレンダーアイコンをクリックしてカレンダーを表示する一連の処理をキャプチャしたいので、ツールバーの「レコーダー」アイコンをクリックします。
②対象のシステムのウィンドウ名を選択し、「Universal Recorder」をクリック
③カレンダーアイコンを選択してクリック
④カレンダー上部の「XXXX年X月」の部分を選択してクリックし、レコーディングを終了
⑤カレンダーアイコンをクリックするアクションと、カレンダー上部の年月部分からプロパティ「Name」(XXXX年YY月の値)を取得して変数に格納するアクションの、2つを画像の通り設定する
※「Name」オブジェクトは開いた時によって値が変わるため、「オブジェクトのプロパティ」から検索条件のチェックを外しておく※
これで、変数にカレンダー上部の年月が格納されました。
ステップ2:取得した年月から「年」の数値と「月」の数値を抽出する
次に、先程変数に格納したカレンダーの表示年月と、入力を行う日付の年月との月数の差分を取得する部分を作成していきます。
まずは、「テキストを抽出」アクションで、「XXXX年YY月」のXXXXの部分と、YYの部分を変数に格納します。
設定内容としては以下のような形になります。
「テキストを抽出」アクションは、ソースとなる文字列から、「基準となる文字列まで」OR「基準となる文字列の間」OR「基準となる文字列より後」の文字列を抽出してくれるアクションです。
今回は「XXXX年YY月」から「年」までの文字列と、「年」から「月」までの文字列を切り取りたいので、
・「以降」にチェックを入れ、「年」のテキストの前に終了(「年」までの文字列の抽出)
・「以前および/または以降」にチェックを入れ、「年」のテキストの後に開始および(AND)「月」のテキストの前に終了(「年」と「月」の間の文字列の抽出)
の2つのアクションで「年」と「月」の値を抽出し、数値の値に変換します。
ステップ3:取得した年月と入力する年月の差月数(クリック数)の取得
では、次に、取得した年月と入力する年月の差を計算していきます。
これは、カレンダー上部の「◀」「▶」をクリックすることで、入力対象の月まで移動するために算出します。
イメージとしては以下の様な形になります。
上記の3パターン×3パターンをIfアクションで判定して、Botのアクションで実現したのが以下になります。
今回は入力したい月が「2020年10月」と固定のため、判定の値も「2020」と「10」という固定の値になっています。
今回は、クリックする「◀」OR「▶」OR「クリックなし」を、「クリック場所」という変数で管理しています。
ステップ4:クリック回数とクリック場所を使用して、カレンダー表示年月を入力年月に合わせる
クリック回数を算出した後は、それを使用して実際に回数分ループして、「◀」もしくは「▶」をクリックしていきます。
Botの内容は以下になります。
ループとレコーダーの設定内容は以下になります。
ステップ5:入力対象の日付を選択する
最後に、入力対象の日付をカレンダーからクリックして、選択をします。
日付の値を持つ要素に、入力対象の日付を入れることで、その日付の値を持つ対象のオブジェクトを探しに行ってくれます。
今回は自動でチェックが入る「Name」要素に日付の値を保持しているため、その値を入力対象の日付に直接変更しました。
こちらにはもちろん変数を設定することもできます。
キャプチャの内容は以下となります。
実行結果は①と同じになります。
以上で、カレンダーを選択しての自動化は完了となります。
さいごに
今回はカレンダーの操作を自動化する方法を紹介しましたが、いかがだったでしょうか。
方法①では1つのアクションで済んだ自動化が、方法②では70行ほどかかってしまいました。
このように、同じ一つの入力欄への操作でも、実装方法によっては時間もソースの行数も大きく違ってきます。
また、今回のカレンダー入力では、カレンダーから現在の年月などが値として取れるような仕様になっていましたが、
カレンダーの仕様によってはもっと迂回して実装する必要が出てくる場合もあります。
また、行数が増えると予期せぬエラーの原因にもなりますので、できれば回避してあげることが大事です。
RPAには、「得意な作業」と「苦手な作業」がある、という話は冒頭でもお話しましたが、
「苦手な作業」を行う際に、人の手や頭を介してあげることで、「得意な作業」に変えてあげることもできます。
Engineer Voiceでは、そういった内容についても引き続きご紹介していければと思います。
最後までご覧いただきありがとうございました。それではまたお会いしましょう!
他のおすすめ記事はこちら
著者紹介
先端技術推進統括部
RPAビジネス推進部
前田 由委