今回は、単語帳の意味を英和サイトで検索して、エクセルに記入するというのを自動化してみたいと思います。このアイデアは、ちょうどTOEICを受けようと思っていた矢先に考えたもので、この方が辞書を引いたりするより、簡単に単語の意味が調べられるからです。
まず、エクセルで単語のリストを作ります。エクセルのAの列に調べたい単語を入力します。
この時点でこのエクセルファイルのバックアップを取っておきましょう。フローチャートを繰り返し実行している間に、万が一ファイルが壊れる場合に備えておきます。

UiPathで新しいフローチャートを開きます。
そこに空のシーケンスを追加し、ダブルクリックしてそれを開いた上で、アクティビティのExcelアプリケーションスコープを追加します。
続けて、そのアクティビティの中に自動的に作られる実行のシーケンスの中に、アクティビティである列を読み込みを追加します。

Excelアプリケーションスコープには先ほど作成したエクセルまでのパスを入力します。
また、列を読み込みでは、単語が書かれているシートの名前を入力します。

ここで新しい変数を作成します。名前はdataoutputとします。変数の型ですが、デフォルトでは表示されていないため、型の参照から検索します。
検索画面で、System.Collections.Genericで検索し、IEnumerable<T>を選びます。また、ドロップダウンメニューでObjectを選びます。

上記の変数作成が終わったら、列を読み込みの出力の項目に変数の名前であるdataoutputを入力します。

次は繰り返し(コレクションの各要素)のアクティビティを追加し、先ほどの変数をコレクションのフィールドに入力します。ここで、現在のインデックス(下記図の赤枠)でInt32の変数を設定します。ここでは名前をcurrentIndexとします。

ちなみにこのアクティビティの中に自動的に作られるシーケンス(本体)をあらかじめクリックしてアクティブにしておきます。
次は、英和サイトを開きます。UiPathがこのサイトから英単語の意味をコピーして来ます。
まず最初に、何かの英単語をサイトで検索して、結果を表示させます。それを一番最初にやる理由は、英和サイトの場合、トップページと検索結果の画面が違うため、UiPathが検索フィールドを見つけられない可能性があるためです。

次はレコーディングに移ります。UiPathでレコーディングのWebを選択します。Webレコーディングのウインドウが出てきたら、英和サイトをクリックして、画面の一番手前に持ってきます。

レコーディングを開始します。まず、検索フィールドをクリックして、UiPathの入力値のウインドウに英単語を入力します。フィールド内を削除するにチェックを入れるのを忘れないように。

入力が終わったら、検索ボタンを押し、検索結果が出たところでエスケープキーを押してレコーディングを一度中断します。
Webレコーディングのウインドウのテキストから、テキストをコピーを選びます。
英単語の意味が表示されている場所をクリックして、テキストをコピーします。

ここでレコーディングを保存し、終了します。UiPathの画面に戻ると、繰り返し(コレクションの各要素)の中にレコーディングされた内容が追加されました。
とりあえず、エクセルに検索結果を書き込む前に、シーケンスが正しく動作するかチェックしてみましょう。
テキストを取得のアクティビティのすぐ下に、1行を書き込みのアクティビティ追加します。TextフィールドにはTdと入力します。

また、検索フィールドに入力する英単語は、エクセルから引っ張ってくる必要があるため、文字を入力のアクティビティで以下のように入力します。
item.ToString

これで一度シーケンスを実行してみます。エクセルが開き、エクセルに書かれている英単語を一つずつサイトで検索をし、出力パネルに検索結果である英単語の意味が表示されれば、正しく実行されています。
ここでもし、エラーになる場合は、セレクターの編集が必要な場合があります。どのアクティビティでエラーになっているかは、付箋のような矢印が表示されます。下記の場合は、ブラウザーにアタッチの場所でエラーになっています。

そこで、ブラウザーにアタッチのセレクターの編集を表示させます。この場合は、サイトのタイトル名がマッチしないためエラーになっています。そこで、Titleのチェックボックスを外し、サイトのタイトルを無視して進めることにします。

シーケンスを実行し、エクセルの英単語の意味が出力パネルに表示されれば、問題なく動作しています。
さて、次はエクセルに英単語の意味を書き込んでいきます。
アクティビティの代入と、セルに書き込みを続けて追加します。
代入には、左辺にはcurrentIndex、右辺にはcurrentIndex + 1と記入します。
セルに書き込みには、シート名にSheet1、範囲には“B”+currentIndex.ToString、値にはTdをそれぞれ入力します。

範囲の“B”+currentIndex.ToStringについての説明ですが、まず”B”はエクセルのセルのB列のことで、currentIndexは、繰り返しのアクティビティが現在何回ループしたかを入れておく変数名です。その変数の値はそのままでは出力できないので、ToStringで出力可能にします。
ここでシーケンスを実行し、エクセルに下記のように追記されれば成功、となります。
