LoginSignup
4
0

More than 1 year has passed since last update.

C-RISEの村井です。
今年はkintone×RPAネタでアドベントカレンダーを書き終えてほっと一息ついてた所ですが、ふとRPAのアドベントカレンダーを見てたら面白そうなテーマが…
@kou1209 さんの CoopelでRPAチャレンジ! です。

Coopel とはDeNAさんのクラウド型RPAサービスです。
そのクラウド型RPA「Coopel」でRPAチャレンジをされてる記事を拝見しインスパイアされちゃいました。
「同じクラウド型RPAを謳うサービスとして クラウドBOT でもチャレンジせねば」
という事で急遽書き始めた今年のアドベントカレンダー第2段は「クラウドBOTでRPAチャレンジ!」です。

クラウドBOTとは?

クラウドBOT®は、Webブラウザを自動操作するBOT(ロボット)をノーコードで作成できるクラウド型のRPAサービスです。
単純なデータ入力業務からWebアプリケーション間のデータ連携などWebブラウザ上で行っている様々な操作をクラウド上で自動化する事ができます。
料金は、無料プランから提供しており、有料プランは月額3300円(税込)から利用できます。
そして、最も特徴的な機能は下記3点です。

  • WebブラウザがあればBOT作成も実行もできる(専用ソフトやプラグインは不要)
  • Webブラウザがあれば利用できるのでWindows、Macに限らずスマホやタブレットでも利用できる
  • 作ったBOTは自動的に入出力が定義されてAPIとして実行する事も可能

RPAチャレンジとは

UiPathが提供しているRPAエンジニア向けのお題です。
実際のサイトはこちらです。

  • EXCELファイルから10行分のデータを抽出
  • 指定のWEBフォームにデータを入力
  • データ件数分の入力を繰り返す

といった内容ですが、このWEBフォーム、結構クセが強いので下記の課題をクリアする必要があります。

  • inputタグのnameが毎回動的に変化する
  • inputタグのidが毎回動的に変化する
  • inputタグの位置が毎回動的に変化する

今回は、 @kou1209 さんの記事を読んで解法も分かってるので、あえて同じ解決手段でチャレンジしてみます。
本記事では、クラウドBOTでRPAチャレンジのBOTを作る場合、どのような作り方になるのかという手順をステップごとに紹介していきたいと思います。
ステップ毎にスクリーンショットを入れながら説明していくので長文になると思いますが、気長にお付き合い下さい。

BOTの基本シナリオ

今回作るBOTは下記の流れで実行していきます。

  1. RPAチャレンジのサイトからExcelファイルをダウンロード
  2. ダウンロードしたExcelファイルから入力対象のデータを抽出
  3. RPAチャレンジのサイトでチャレンジスタート(開始ボタン実行)
  4. Excelから抽出したデータをフォーム入力
  5. データ件数分、フォーム入力を繰り返す
  6. RPAチャレンジの結果メッセージを取得

1. RPAチャレンジのサイトからExcelファイルをダウンロード

まずは、RPAチャレンジに使用するExcelファイルをダウンロードする所から自動化したいと思います。
下記はBOTのエディタ画面です。
エディタ画面内にURL入力欄があるのでこちらにRPAチャレンジのサイトURLを入力します。
image.png

RPAチャレンジのページが表示されました。
実はこの画面は、クラウド上で実行されている仮想ブラウザの画面を転送表示しています。
つまり、クラウド上のブラウザを遠隔操作しているという事です。
そのため、画面転送に多少の遅延が発生します。
少し動きがもっさりしてるなと思われるかも知れませんが、遠隔操作してるからだねと優しく見守ってください。
操作対象のページが表示されたら、エディタ左上の「≡」アイコンをクリックしてサイドメニューを開きます。
image.png

サイドメニュー内の「ブラウザ操作を記録する」ボタンを押すと、以降の操作は自動記録されます。
image.png

最初のタスクとして、RPAチャレンジのサイトURLを入力するタスクが自動追加されました。
入力したURLは値1というデータ名で記録されています。
image.png

今回は、Excelファイルをダウンロードする操作から自動化するので「EXCELファイルをダウンロード」のボタンを選択します。
画面内の要素を選択するとメニューが表示されるので、メニューから「その他の機能 > ダウンロード」を選択します。
image.png

ファイルのダウンロードが始まると画面右上に通知が表示されます。
ここでいう「ダウンロード」とは、仮想ブラウザ内にダウンロードする事を指します。
仮想ブラウザがある所、つまりクラウド上にダウンロードするという事です。
image.png

通知が消えたら、赤く光っている「ダウンロード(1)」をクリックします。
image.png

仮想ブラウザがダウンロードしたファイルが表示されるのでコピーしたいファイルにチェックを入れて「1ファイルをコピー」のボタンをクリックします。
image.png

ダウンロードする毎にファイル名が変化する場合は、ここでファイル名のパターンを入力するのですが、今回は"challenge_ja.xlsx"のファイル名固定なので、そのままデータ名に「excelファイル」とだけ入力してコピーします。
image.png

サイドメニューを開くとデータ名「excelファイル」にエクセルファイルがコピーされている事が確認できます。

2. ダウンロードしたExcelファイルから入力対象のデータを抽出

次はダウンロードしたEXCELを開きます。
一般的なブラウザと同じくクラウドBOTの仮想ブラウザもEXCELを操作する機能は対応していません。
そこで、通常ブラウザではできない機能に対応する為の拡張機能を利用します。
まずは、拡張機能を表示する為の新しいタブを開きます。
その後、右上の「︙」アイコンから拡張機能を選択します。
image.png

拡張機能のパッケージ一覧からExcel(xlsx)を選択します。
image.png

今回は、ダウンロードしたexcelファイル内のデータを読みたいので「ビューア」を選択します。
image.png

「使用する」ボタンをクリックすると拡張機能「Excel(xlsx)ビューア」が開きます。
image.png

先程新しく開いたタブにビューアが表示されました。
URLを見ると特殊なプロトコル「cbot-extension://〜」から始まるURLになっています。
クラウドBOTの仮想ブラウザからしか呼び出せないURLですね。
拡張機能は通常のWEBページと同様に操作できるので、拡張機能に対する操作もRPAのタスクとして記録していきます。
まずは、ビューアで読取りたいExcelファイルをアップロードする為「ファイルを選択」ボタンをクリックします。
image.png

先程までと同様に操作選択のメニューが表示されたので「クリック」を選択します。
image.png

通常ブラウザの場合、ここでアップロードするファイルを選択するエクスプローラー等がポップアップされるのですが、クラウドBOTの場合はここで既にデータにコピー済みのファイルが選択できます。
先程ダウンロードファイルをコピーした「excelファイル」を選択します。
image.png

ビューアにファイル「challenge_ja.xlsx」がアップロードされました。
「次へ」ボタンをクリックするとビューアのステップ2へ進めます。
image.png

ちなみに今回ダウンロードしてきたEXCELファイル「challenge_js.xlsx」のデータの中身はこんな感じです。
image.png

ビューアではタイトル行を含んだ範囲を指定します。
今回は「A1:G11」と入力し「次へ」ボタンをクリックしてステップ3へ進めます。
この操作もタスクとして記録されます。
image.png

1行目はタイトル行なので、2行目〜11行目までの10行がデータ行数として認識されました。
image.png

ビューア表示する準備が整ったので「表示ボタン」をクリックします。
image.png

EXCEL内のデータが表示されました。
この表示されたデータも通常のWebページと同じように扱えます。
まずは1行1列目の苗字「井上」を選択しテキストをコピーしてみます。
image.png

コピー先のデータ名に「苗字」と入力します。
image.png

順次、「名前」「会社名」「部署」「住所」「メールアドレス」「電話番号」とデータ名をつけながらコピーしていきます。
image.png

コピーしたデータリストはサイドメニューのデータ欄の「ビューア」から確認してみましょう。
image.png

1行目の各データに名前をつけてコピーされている事が分かります。
しかしこのままだと2行目、3行目と大量にデータをコピーする操作をする事になり効率的ではありません。
image.png

そこで、クラウドBOT特有のグループ機能を使用してみます。
まずは、1行1列目の要素を選択し、操作メニューから「グループ範囲を探す」を選択します。
image.png

現在、赤色の枠で囲まれているのは1行1列目の「井上」だけです。
この赤枠を広げてグループ化する範囲を探します。
「選択範囲を」広げるをクリックします。
image.png

まだ、1行1列目の範囲が赤枠で囲まれています。
もう一度「選択範囲を」広げるをクリックします。
image.png

今度は1行目全体が赤枠で囲まれました。
この枠の中には1行目の下記データが含まれています。

  • 苗字
  • 名前
  • 会社名
  • 部署
  • 住所
  • メールアドレス
  • 電話番号
    この7項目を一つのグループとしてまとめます。
    この後繰り返し処理したい2行目以降の範囲が青色の枠で囲まれている事も確認しましょう。
    ここで「グループ範囲を確定」を選択します。
    image.png

続いて「グループを作る」を選択。
image.png

グループ化すると1行目の「苗字」〜「電話番号」まで7列のデータをコピーするタスクが青枠で囲まれました。
サイドメニューを開いてみましょう。
image.png

この青色の範囲は「グループ1」のデータを作る為に繰り返し処理しますという意味です。

データのビューアを開いてみましょう。
先程まで「データ」タブの中にあった「苗字」〜「電話番号」までが消えています。
代わりに「グループ1」のタブが増えました。
グループ1に表示を切り替えてみます。
image.png

「データ」タブでは縦に並んでたデータが横列に並んでいます。
グループ化する事で対象データは表データの1行目に変換されたのです。
自動的に割り当てられたグループ名「グループ1」を選択すると名称を編集できるので「顧客一覧」に変更しました。
image.png

では、残りの2行目以降のデータをコピーする為に、下記の「グループ処理を完了」ボタンをクリックします。

Excelビューワに表示されている10行全てがグループデータとしてコピーされました。
image.png

サイドデータビューアを開いてみるとコピーされた10行を確認できます。
image.png

それでは、EXCELデータを読み込む前処理が終わったので、本題のRPAチャレンジに進める為「Rpa Challenge」タブをクリックして画面を戻します。
タブ切り替えも一つのタスクとして記録されます。
image.png

3. RPAチャレンジのサイトでチャレンジスタート(開始ボタン実行)

まずは、RPAチャレンジを開始する為に「開始」ボタンをクリックします。
この時点からRPAチャレンジの処理時間が計測されるようです。
image.png

4. Excelから抽出したデータをフォーム入力

ROUND1が始まりました。
ROUND1ではEXCELの1行目のデータを入力するのですが、今回は10回繰り返し入力する必要があるのでサイドメニューのデータ欄から「顧客一覧」の操作メニューを開きます。
少し分かりにくいですが「10明細行」と書かれ右側の「<」をクリックすると開きます。
image.png

10明細分繰り返し処理をしたいので「グループを使う」というボタンをクリックします。
image.png

先程のグループデータを作る時と同じように青枠が表示されました。
ただ、今回はグループ名「顧客一覧」の右側に「作る」ではなく「使う」と表示されてます。
「作る」の時は画面内で選択した範囲を基準に繰り返しデータをコピーしますが、「使う」の場合はコピー済みのグループデータを基準にデータ行数分の繰り返しが行われます。
image.png

それでは、グループ処理の枠ができてたのでこの中に繰り返し操作したい処理を記録していきます。
まず、フォーム左上にある「メールアドレス」を選択してメニューから「その他機能」「要素セレクタを指定する」を選択します。
今回は、要素セレクタを直接指定するのでどの入力欄からメニューを開いても問題ありません。
image.png

要素セレクタを指定するダイアログが開いたら「任意のセレクタで要素を探す」の欄に
@kou1209 さんの記事を参考に「input[ng-reflect-name="labelLastName"]」と入力します。
虫メガネのアイコンをクリックすると入力したセレクタで目的の要素を認識できるか確認できます。
今回は「苗字」の欄が赤く囲われたので問題なく認識しているようなので「閉じる」ボタンをクリックします。
image.png

セレクタで指定した要素にデータを貼り付ける為、苗字の欄の所にある「≡」をクリックしてメニューを開いて下さい。
※要素セレクタを指定後、対象要素を再度クリックすると自動識別のセレクタに上書きされてしまうので要素セレクタを指定した直後の「≡」からメニューを開いて下さい
次いで「データを貼り付け > 顧客一覧:グループデータ」を選択します。
image.png

グループデータ「顧客一覧」内のデータ名が表示されるので「苗字」を選択します。
image.png

さらに次のデータも順次同じ手順で要素セレクタ指定→データ貼り付けの操作をしてタスクを記録していきます。
image.png

と思ったら、この時点でこんな画面が表示されました。
どうも仮想ブラウザが停止してしまったようです。
実は、クラウド上で稼働している仮想ブラウザはサーバレスという機能を利用している為、最大実行時間10分という制約があります。
10分に到達するとブラウザが落ちてしまうのです。
でも、ブラウザが終了しても今までの操作が無駄になる事はありません。
「仮想ブラウザを起動してタスクを再実行します。宜しいですか?」の質問に「OK」と答えると再度仮想ブラウザを起動し今まで記録したタスクを一通り再実行して元のタスク位置まで復帰してくれます。
image.png

という事で元の状態に復帰しました。
image.png

念の為、サイドメニューを開いてみると現在仮想ブラウザが起動してからどれだけ経過しているかインジケータで確認する事ができます。
この実行時間10分の制約を超える場合、Cloud BOT Agentを使用するという方法もあるのですが、今回のテーマではないので割愛します。
image.png

気を取り直して、各データの要素セレクタ指定とグループデータの貼り付けを再開します。
データとセレクタの関係をまとめると下記の通りです。

  • 苗字 input[ng-reflect-name="labelLastName"]
  • 名前 input[ng-reflect-name="labelLastName"]
  • 会社名 input[ng-reflect-name="labelCompanyName"]
  • 部署 input[ng-reflect-name="labelRole"]
  • 住所 input[ng-reflect-name="labelAddress"]
  • メールアドレス input[ng-reflect-name="labelEmail"]
  • 電話番号 input[ng-reflect-name="labelPhone"]

一通り貼り付けが完了しました。
image.png

グループ処理の最後のタスクとして「登録」ボタンのクリックを記録します。
image.png

5. データ件数分、フォーム入力を繰り返す

1件目の登録が完了したので「ROUND 2」に進みました。
ここまででグループ処理の一連のタスク記録が完了したので「グループ処理を完了」をクリックする事で残りの2行目〜9行目まで繰り返し処理が行われます。
image.png

尚、グループデータを「作る」時も「使う」時もグループ処理を完了しようとすると下記のようなメッセージが表示されます。
これは、グループ処理のタスク追加を終了し残り全件の繰り返し処理をするので、タスクの位置もグループ処理の外に移動しますがいいですかという確認です。
image.png

グループ処理を完了するとRPAチャレンジも完了し結果が表示されました。
158秒と表示されていますが、途中でブラウザを再起動した為ですね。
実際には記事用にスクリーンショット等を取りながらBOTを作ってるので1時間程度のBOT作成時間がかかりました。
BOTも何度か再実行してるのでスクリーンショットの画面表示に少し不整合があるかもしれません。
次の画像と速度の秒数が異なるのもその一つです(笑)
image.png

6. RPAチャレンジの結果メッセージを取得

最後に結果メッセージをテキストコピーするタスクを追加します。
image.png

データ名称はチャレンジ結果にしてみました。
image.png

全てのタスク登録を終えたのでBOTを保存します。
サイドメニューの「保存」アイコンをクリックします。

保存画面が開くのでBOT名を入力します。
また、クラウドBOTは操作記録中にて入力した情報をBOTの入力データ(いわゆる引数)として自動定義されるようになっています。
つまり、BOT実行毎に毎回入力データを書き換えて実行できるようになっているのです。
今回、直接手入力した情報はEXCELデータを抽出する範囲を指定する「A1:J11」だけでした。
この情報はBOT実行毎に書き換える必要が無いので入力データから外しましょう。
「入力データを選択」をクリックします。
image.png

EXCELの範囲が記録された値12のチェックを外して青色の☑アイコンで適用します。
データが入力値から外されてもBOT内に保持する内部データとして記録された状態となりますので実行時に任意指定できなくなるだけで動作的には影響ありません。
image.png

次に保存画面を下にスクロールすると出力データというデータリストが確認できます。
クラウドBOTはWEB画面上からコピーしたデータはBOT実行者が必要なデータとして自動的に出力データ(いわゆる返り値)に定義されるようになっています。
こちらも何を出力するか選択設定できますが今回はこのまま保存したいと思います。
「保存」ボタンをクリックします。
これでBOTの作成が完了しました。
ここまでWEB画面を操作しながらタスクを記録し、ノーコードでBOTを作成する事ができました。
お疲れ様でした。
image.png

BOTを実行してみる

では早速BOTを実行してみます。
今保存したBOTの詳細画面から「実行する」ボタンをクリックします。
image.png

今回のBOTは入力データが無いのでこのまま「実行」ボタンをクリックします。
入データが定義されているBOTの場合はこの画面で入力データを書き換えてから実行する事ができます。
image.png

実行中、自動操作している仮想ブラウザの画面がパラパラ表示されますが画面の動きが早くて転送が追いついていない感じです。
image.png

RPAチャレンジの完了画面が表示されました。

  • 正解率: 100%
  • 速度: 10秒 (10329ms)
    という事で、思ったより高速に実行できました。
    image.png

BOT実行が完了すると出力データが表示されます。
RPAチャレンジサイトからダウンロードしてきたEXCELファイルも出力されてますね。
image.png

さらにタブを切り替えれば顧客一覧のグループデータも出力されている事が分かります。
image.png

今回は、手動で実行しましたが、このBOTをAPIで実行すれば入力データを引数として指定し、出力データを返り値として受け取れるREST APIとしても呼び出し可能です。

実行したログを確認

最後に実行ログを確認してみましょう。
BOTの実行ログはクラウド上に記録されています。
今回は成功した実行結果2件のログが表示されています。
「詳細」をクリックしてみましょう。
image.png

ログ詳細では、実行結果の出力ログを閲覧したり、実行時のスクリーンショットを確認する事ができます。
image.png

まとめ

という事で「クラウドBOT」でRPAチャレンジやってみました。
無事実行できてよかったです。
RPAチャレンジ初めてやってみましたが、RPAの基本的な操作を練習するのに良い題材ですね。
今回は、クラウドBOTを使って下記操作をご紹介しました。

  • WEBサイト上からのファイルダウンロード
  • ダウンロードファイルをBOTのデータにコピー
  • ファイルをWEBサイトにアップロード
  • 拡張機能(Excelビューワ)の利用
  • テキストデータのコピーと貼り付け
  • グループデータを使った繰り返し処理

また機会があれば、その他の便利な機能等もご紹介できればと思います。
良ければ先日書いたアドベントカレンダー kintone×RPAを完全クラウドで実現する話にも目を通して頂けると幸いです。

クラウドBOTはクラウド型RPAと言いながら、今後様々なWeb自動化を実現するプラットフォームへと成長させていく予定です。
もしご興味を持って頂けましたら、無料プランもご用意してますので是非触って遊んで頂ければと思います。

長々とご拝読頂きありがとうございました。
今年は、大雪で迎えるクリスマスとなりましたが皆様楽しいクリスマスをそして良い年をお迎え下さい。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0