【UiPath】検索結果の取得を試みる③【初心者】
今回は、UiPathで「検索結果の取得」にトライしてみます。パート③です。
パート①

パート②

目的
パート①の目的
検索キーワード別の検索結果を取得し、Excelに記入する。
検索キーワードは、「AA BB」「AA CC」……のように、2つ目のワードを変えたもの。
取得するデータは、検索結果1位のタイトルとリンク。
イメージはこんな感じ↓
検索キーワード | タイトル | リンク |
AA BB | X | https… |
AA CC | Y | https… |
AA DD | Z | https… |
パート②と③の目的
1回の実行で、2つ以上の検索キーワード検索結果1位のリンクをExcelに記入する。
仮説③
この手順でできる?
1.検索キーワードが記入されているExcelファイルを読み込む
2.「繰り返し」アクティビティを使用
3.セルに書き込む場所を1つずつ下にづらす
検証③
パート①と②で使用していたキューを使わずに、検証を進める。
1.検索キーワードが記入されているExcelファイルを読み込む
検索キーワードが記入されているExcelファイル↓
上記ファイルを「範囲を読み込み」アクティビティですべて読み込む。

「範囲を読み込み」アクティビティで出力したデータは、データテーブル型の変数になるね。この変数を「繰り返し」アクティビティで使えば、うまくいくかも。
ワークフローの全体像はこちら↓
2.「繰り返し」アクティビティを使用
「繰り返し」アクティビティを活用して、URLの取得から書き込みまで行う。
「繰り返し」アクティビティの中身を紹介。
まず、「範囲を読み込み」アクティビティで読み込んだデータをデータテーブル型の変数Keywordに格納。そして、変数Keywordを「繰り返し」アクティビティで使用する。
変数Keywordの1行目の検索キーワードでGoogle検索を行うフローを作成。
内容が前回の記事と重なるため詳細は割愛。

「属性を取得」アクティビティでページのリンクを取得して、String型の変数URL_Dataに格納。
そして、変数URL_Dataに格納したURLをExcelファイルの指定のセルに記入。
最後に、表示したタブを閉じる。

今回の肝は、ここから。
これまでも、「セルに書き込み」アクティビティで取得したURLを記入したかったが、指定のセルに記入するため、取得したURLを同じセルに上書きしてしまうという問題があった。この問題を解決するには、記入するセルを1つずつ下にずらす必要がある。
3.書き込むセルを1つずつ下にずらす
解決方法は、「セルに書き込み」アクティビティの範囲指定の仕方と「繰り返し」アクティビティの設定にあった。
「セルに書き込み」アクティビティの範囲指定の仕方は、上記画像のとおり。
列は「C(URL記入列)」に決めて、行を1つずつずらす記述として「(count + 2).ToString()」としている。

「セルに書き込み」アクティビティの範囲指定を上記のように式で表す発想は、今までなかった。でも、「(count + 2).ToString()」の(count + 2)の部分は、どういうことだろう。
countは「繰り返し」アクティビティに関係がある。
上記画像のように、「繰り返し」アクティビティには、現在のインデックスを変数に出力できる欄がある。この項目が、処理中のデータテーブル型の行数を表す。よって、最初に処理するデータは、「count = 0」となる(データテーブル型は0から始まる)。
しかし、実際にExcelファイルに記入する際は、C2から記入がはじまるため、「セルに書き込み」アクティビティの範囲指定に「count + 2」とすることで、「0 + 2」となり、C2から書き込みがはじまる。
「繰り返し」アクティビティで処理が繰り返されるごとに変数countに+1される。そのため、最初はC2から書き込み、2回目はC3、3回目はC4と処理が繰り返されるたびに記入されるセルが下にずれていく。

ふむふむ、今回の盲点は、「セルに書き込み」アクティビティの範囲指定の方法と「繰り返し」アクティビティの処理中の行を表す方法だったね。
実際に、ワークフローを実行してみた結果↓
一度の実行で、C2とC3にURLが記入された。
検証結果①
検証結果、各検索キーワードの検索結果1位ページのリンクを取得し、指定のExcelファイルに順番よく並べて記入できた。
今回の検証結果による学びと課題
学び(記事化予定)
・「セルに書き込み」アクティビティの範囲指定の方法
いちおう、当初の目的はクリアしたが、改善すべき点はいくつかある。
課題
・ページに移行してURLを取得している(ページに移行せず、検索結果ページからリンクを取得できないか)
・処理時間の短縮
・シミュレートモードでできないか
・だれでも簡単に使えるようにできないか
コメント