フォームを使って、アンケートを実施していたのですが、一括収集が有料のプレミアムプランということに気づかず、一つ一つの回答結果を収集しないといけなくなりました。RPAを使って、結果を収集していきます。
目次
今回やりたいこと
以下の図をご覧ください。同じページの中に複数の回答があります。このテーブルの中からデータを取得したいというのが今回のやりたいことです。一つ気にかかる点があるのが、ページの切り替えです。ここをどのように実装していくかが腕の見せ所ですね。
抽出した結果は以下の通り、Excelの列ごとに書き込みを行います。
もう一つ、アンケートの中でファイルのアップロードを依頼しているので、そのファイルのダウンロードも必要となります。
ブラウザの表データをエクセルファイルに出力する
まずはページ切り替えを考えずに、ブラウザの表データからのデータ抽出を実装します。どのプログラム開発にも言えることですが、簡単なところから一つずつ実装していって、最終的にくっつける方が分かりやすいので常に意識しておきましょう。
1.ブラウザーを使用する設定を行う
アクティビティ:アプリケーション/ブラウザーを使用を追加し、自動化するアプリケーションを指定をクリックします。
自動化するブラウザーを選択します。ここでは、回答画面を選択すると、UiPath側にURLが反映します。
これが最初のステップで、ここにアクティビティをドロップの部分に処理を追加していきます。
2.繰り返し(各UI要素)を追加する
アクティビティ:繰り返し(各UI要素)を追加します。
ページ内の表のデータを取得するための処理なんです。
3.クリックを追加する
アクティビティ:クリックを追加します。
クリックを追加した後に、どの項目をクリックするか選択します。以下の矢印部分をクリックします。
指定するのは、以下の図の通りです。重要なポイントは、自分が手動で作業するときに選択する項目(UI)を選択することです。
選択したら、確認をクリックしましょう。
4.Excelファイルを使用を追加する
アクティビティ:Excelファイルを使用を追加します。ファイルパスの指定については、こちらをご覧ください。
5.表データを抽出を追加する
アクティビティ:表データを抽出を追加することで、ブラウザーのデータを4.で追加したExcelファイルに転記していきます。
次で指定の部分をクリックすると、ブラウザ上のどのデータを取得するかを選択できます。以下、緑色部分がデータの詳細となります。このデータを取得したいです。
追加する際には、全体を選択します。
そして、その後出力先を選択します。ここではExcelファイルに出力します。
すでに出力先のエクセルファイルを開いているようであれば、以下のExcel内で示すをクリックすると非常に楽です。
出力したいセルを選択し、確認ボタンをクリックします。
以下のようにシート名と出力先が記載されます。
6.列を移動しながら、データを転記する
このまま、実行すると、以下のように出力されます。。。
前述の仕組みで設定した場合、A1→A2→A3→A4と転記されていることが分かります。上記のような出力のされ方であれば、転記する順番は列を右に、A1→B1→C1→D1→…という設定の仕方をする必要があります。
では、どのように設定したら良いのでしょうか?
1.詳細エディタを起動する
2.入力する列の番号を設定する
勘の良い方はお分かりかと思いますが、以下の数式内の、A1部分をB1,C1、、といった形に修正すればOKです。
では、入力されている列を順番にA→B→Cと変更していくにはどうしたら良いのでしょうか?
ここではシンプルに、入力する列を数値にして、1から順番にカウントアップする方法を考えました。まず初めに、変数の値(初期値)を設定します。
そして、エクセルへの書き込みが完了したら、以下のように、変数に1を加えて、次の列に書き込む準備をするという流れになります。
3.入力する列数をアルファベットの列に変換する
ポイントです。前述にA1のA部分を置き換えるにはどうしたら良いのでしょうか?
具体的には
1→A
2→B
3→C
といった形です。
UiPathには上記を実現する関数が準備されています。具体的には以下を用います。かっこ内の引数には、数値を入力します。ここでは、入力列数という変数を準備していましたので、以下の数式を用いれば完成です。
uipath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(入力列数)
これで、横向きに転記することができます。エクセルへの転記はこれで完了です。
画像データのダウンロードを行う
シンプルに、以下のボタンをクリックするだけですので、UiPathもクリックを追加して実装します。
なお、ダウンロードファイルはPCのダウンロードフォルダに格納されます。
ページを遷移する(次へボタンをクリックする)
ここまでで、表の中のデータの転記はできました。次は、以下のように分かれているページを遷移しつつ、すべてのデータを転記したいと思います。
1.繰り返し(指定回数)を設定する
繰り返し回数が分かっているのであれば、定数で繰り返し回数を指定してしまえば良いと思います。もう少し別の方法も考えましたが、設定する量として、これが一番少ないので、いいかなと思いました。
数は以下のように指定します。シンプルにページ数の3を入力しましょう。
2.クリックで次のページへ遷移する
クリックを追加し、次のページへ遷移させます。
一つ問題が。。以下の図の通り、画面上部、下部にそれぞれ次のページへ遷移する似たようなボタンが2つあります。この時、ボタンの位置から考えて、他のボタンやアイコンをダブルで指定して、設定することで、ユニーク(一意な・被りのない)設定をすることができます。これをアンカーと呼びます。
以下のように、画面上部にしかない、検索ボタンの虫眼鏡のアイコンをアンカーとして設定しています。
3.画面遷移の時間を待つための待機時間を設定する
そのままですが、次のページへ遷移する際に、若干のタイムラグがあります。このタイムラグによる不具合を防ぐために、待機時間を設定します。
待機時間は分・秒・ミリ秒が存在します。インターネット環境によってページ遷移のタイムラグ時間が異なるとは思いますが、私は3秒設定してみました。
さいごに
結果、冒頭説明したように、エクセルファイル内、右側にどんどん追加していくロボットを作ることができました。結構慣れてきたので、賞味1時間くらいで完成しましたー^^
ではまた!
[…] 行ではなく、列ごとに転記する方法 […]