こんにちは!UiPath メンターです。
これまで、変数、Web操作、Excel操作、ループ処理……と、たくさんの武器を手に入れてきました。
今日はいよいよ、それらを組み合わせて「実務で使えるロボット」を作ってみましょう。
今回のミッションはこれです。
Webサイト上にある「一覧データ」を読み取り、手元のExcelファイルにバックアップとして保存する。
経費精算システムの履歴データや、競合他社の商品価格リストなどをイメージしてください。
今回は練習として、誰でもアクセスできる「Wikipediaの国一覧」などをターゲットにして作ってみましょう。
1. まずは「設計図」を描こう
いきなり作り始めてはいけません。
プロのデベロッパーは、必ず最初に「処理の流れ」を整理します。
- 【Web】 ブラウザを開く
- 【Web】 表データを抽出する(変数
dt_Listに入れる) - 【Excel】 Excelを開く
- 【Excel】 シートに
dt_Listを書き込む
この順番で作っていけば迷いません。さあ、Studioを開いてください!
2. Step 1:Webからデータを取ってくる
まずはデータを確保しないと始まりません。
① ブラウザを開く
[アプリケーション/ブラウザを使用] を配置し、ターゲットとなるWebページを指定します。
(練習用URL例:Wikipediaの「国の人口順リスト」など、表があるページなら何でもOKです)
② データを抽出する
第6回で学んだ [表データを抽出 (Table Extraction)] 機能を使います。
- リボンの [表データを抽出] をクリック。
- Webページ上の表(国名や人口など)を選択して、データを取得します。
- 保存して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に書く」というパイプラインが繋がりました。
[ファイルをデバッグ] を押してみましょう。
- ブラウザが立ち上がり(またはアクティブになり)、ページを読み込みます。
- 一瞬で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件ずつ登録していく」ロボットを作ります。
これができれば、「データ入力の自動化」は完了したも同然です!