【UiPath入門】第11回:実践演習(1)~WebのデータをExcelへ自動転記しよう~

こんにちは!UiPath メンターです。

これまで、変数、Web操作、Excel操作、ループ処理……と、たくさんの武器を手に入れてきました。
今日はいよいよ、それらを組み合わせて「実務で使えるロボット」を作ってみましょう。

今回のミッションはこれです。

【ミッション】
Webサイト上にある「一覧データ」を読み取り、手元のExcelファイルにバックアップとして保存する。

経費精算システムの履歴データや、競合他社の商品価格リストなどをイメージしてください。
今回は練習として、誰でもアクセスできる「Wikipediaの国一覧」などをターゲットにして作ってみましょう。

1. まずは「設計図」を描こう

いきなり作り始めてはいけません。
プロのデベロッパーは、必ず最初に「処理の流れ」を整理します。

  1. 【Web】 ブラウザを開く
  2. 【Web】 表データを抽出する(変数 dt_List に入れる)
  3. 【Excel】 Excelを開く
  4. 【Excel】 シートに dt_List を書き込む

この順番で作っていけば迷いません。さあ、Studioを開いてください!

2. Step 1:Webからデータを取ってくる

まずはデータを確保しないと始まりません。

① ブラウザを開く

[アプリケーション/ブラウザを使用] を配置し、ターゲットとなるWebページを指定します。
(練習用URL例:Wikipediaの「国の人口順リスト」など、表があるページなら何でもOKです)

② データを抽出する

第6回で学んだ [表データを抽出 (Table Extraction)] 機能を使います。

  1. リボンの [表データを抽出] をクリック。
  2. Webページ上の表(国名や人口など)を選択して、データを取得します。
  3. 保存してStudioに戻ると、自動的にアクティビティが配置されています。

③ 変数を確認・調整する

自動生成された [表データを抽出] アクティビティのプロパティを見てください。
[出力] > [データ テーブル] 欄に、新しい変数(例:dt_ExtractDataTable など)が設定されているはずです。

💡 メンターからのアドバイス:変数のスコープ(重要!)

ここで作成された変数は、放っておくと「ブラウザの中(Web操作の枠内)」でしか使えない設定になっていることがあります。
このデータを後で「Excel操作の枠」でも使いたいので、変数の有効範囲(スコープ)を一番広い外側の枠(Main Sequenceなど)に変更しておきましょう。
※画面下の [変数] パネルで変更できます。

3. Step 2:Excelに書き込む

Web操作の枠(アプリケーション/ブラウザを使用)の下に、Excel操作の枠を作ります。

① Excelを開く

[Excel プロセス スコープ] を配置し、その中に [Excel ファイルを使用] を入れます。
ファイル名は "国リスト.xlsx" など、新規作成するファイル名を指定します。

② データを書き込む

[範囲に書き込み (Write DataTable to Excel)] というアクティビティを使います。
※似た名前の [セルに書き込み] ではないので注意!データテーブルを丸ごと書き込む専用のアクティビティです。

  • 書き込むデータ (What to write): 先ほどWebで取得した変数 dt_ExtractDataTable
  • 宛先 (Destination): Excelの書き込みたいセル(例:Sheet1のA1)を [Excel内で示す] で指定。

4. いざ、連結テスト!

これで、「Webから取る」→「Excelに書く」というパイプラインが繋がりました。

[ファイルをデバッグ] を押してみましょう。

  1. ブラウザが立ち上がり(またはアクティブになり)、ページを読み込みます。
  2. 一瞬でExcelが立ち上がり、データがパパッと書き込まれます。

作成されたExcelファイルを開いて確認してください。
Web上の表がそのまま再現されていれば大成功です!

5. 応用:もし「データがなかったら」?

実務では、「サイトを開いたけどデータが0件だった」ということもあり得ます。
そんな時にエラーで止まらないよう、[条件分岐 (If)] を挟むとプロっぽくなります。

Excelに書き込む直前に、以下のようなチェックを入れます。

  • 条件: dt_ExtractDataTable.RowCount > 0
  • Then(データがある): Excelへの書き込みを行う。
  • Else(データがない): [メッセージ ボックス] で「データがありませんでした」と通知する。

RowCount は「行数」を数える命令です。これが0より大きいかを確認しているわけですね。

今回のまとめ

  • ワークフロー作成は、まず「Webパート」と「Excelパート」に分けて考える
  • 両者を繋ぐのは「データテーブル変数」
  • 変数のスコープ(有効範囲)を広くしておかないと、バトンタッチができない。

⚠️ つまづきポイント:Excelに何も書き込まれない?

エラーは出ないのにExcelが真っ白な場合、変数のスコープ設定が間違っていて、空っぽの変数が渡されている可能性があります。
または、Webからの抽出(スクレイピング)自体が失敗しているかも?
[表データを抽出] の直後に [メッセージ ボックス] を置いて dt_ExtractDataTable.RowCount.ToString を表示させ、ちゃんと行数が取れているか確認してみましょう。

次回は実践演習の後半戦。
今回とは逆に、「Excelのリストを読み込んで、Webシステムに1件ずつ登録していく」ロボットを作ります。
これができれば、「データ入力の自動化」は完了したも同然です!

タイトルとURLをコピーしました