JobAutoで要素の繰り返し範囲を調整する方法

★ページの説明・概要

JobAutoのブラウザ操作「要素の繰り返し処理」で、Webページの一覧や表のうち、処理する要素の範囲を調整する方法を説明します。

一覧の一部しか繰り返し対象にならない場合や、不要な要素まで対象になる場合は、「取得範囲」「XPathの除外」「XPathのフィルター」「表示値のフィルター」を使い分けます。

このページでは、都道府県ごとに店舗名が表示されるWebページを例に設定方法を紹介します。アクションの作成方法や各設定項目の詳細は、要素の繰り返し処理の基本マニュアルをご確認ください。

1.都道府県別の店舗一覧を繰り返し処理する

以下のように東京・大阪・愛知などの店舗が並んでいるWebページを想定します。店舗名を一つずつ取得するため、「要素の繰り返し処理」アクションを作成します。

都道府県ごとに店舗が並ぶWebページの一覧例

まず通常どおりに対象となる要素を選択し、繰り返し処理の設定画面を開きます。

要素の繰り返し処理アクションの作成画面

2.対象が一部しか取得できない場合は「取得範囲」を確認する

同じ一覧に見えていても、設定した要素の範囲によっては、東京の店舗だけが繰り返し対象となり、大阪や愛知の店舗が含まれない場合があります。

東京の店舗だけが繰り返し対象になっている設定画面

その場合は、「取得範囲」で「拡張した範囲の要素」を選択します。現在の設定内容に近い要素まで検索範囲を広げるため、対象が増える場合があります。

取得範囲を拡張した範囲の要素に変更した設定画面

変更後は「再読込」をクリックし、「繰り返しの対象リスト」に大阪や愛知の店舗も含まれたか確認してください。範囲を広げた結果、不要な要素が含まれた場合は、次の除外・フィルター設定で調整します。

3.不要な要素を「XPathの除外」で対象から外す

繰り返し対象に含めたくない要素がある場合は、「XPathの除外」を設定します。たとえば、一覧に混在している不要な見出しや特定の要素を除外したい場合に利用します。

XPathの除外によって不要な要素を対象外にする設定画面

XPathの除外は、指定条件に該当する要素を対象リストから外す設定です。必要な店舗まで除外していないか、再読込後の対象リストで確認してください。

4.「XPathのフィルター」で特定の要素だけに絞る

特定のHTML構造に一致する要素だけを処理したい場合は、「XPathのフィルター」を使用します。対象となる要素のXPathを指定して、繰り返す候補を絞り込みます。

XPathのフィルターを使用して繰り返し対象を絞り込む画面

「XPathの除外」は対象から外す設定、「XPathのフィルター」は対象に含める要素を絞る設定です。用途に応じて使い分けます。

5.「表示値のフィルター」で表示文字から絞る

Webページに表示されている文字を基準に対象を絞りたい場合は、「表示値のフィルター」を使用します。対象の表示文字を指定し、該当する要素だけがリストに残ることを確認してください。

表示値のフィルターで対象文字列を指定する画面

表示される文字はWebページの更新によって変化する場合があります。指定した条件に合わず目的の店舗が除外されていないか、実際のページで確認します。

6.XPathを直接編集して要素の条件を調整する

フィルターではなく、繰り返し処理の「XPath」自体を編集して対象を指定することもできます。例では histListData pause というclassを持つ要素に着目しています。

XPathを直接編集して対象を指定する画面

XPathを編集したあとは、必ず「再読込」を実行してください。XPathが正しくても、ページ構造の変更によって認識結果が変わる場合があります。ブラウザ要素の指定が不安定な場合は、ブラウザの要素を安定して指定する方法もご確認ください。

7.「開始行」で繰り返しを始める位置を指定する

「開始行」で、繰り返し対象リストの何番目から処理するかを指定できます。指定しない場合はリストの先頭から処理します。例えば5番目から処理したい場合は「5」を設定します。

対象リストの最後の1件だけを処理したい場合は、「開始行」に -1 を指定します。

開始行にマイナス1を指定して最後の要素だけを処理する設定画面

「開始行」は処理する位置を設定する項目です。通常の開始行・終了行・ステップの詳細は、要素の繰り返し処理マニュアルをご確認ください。

操作動画:ループの開始位置を制御する方法

Webページの繰り返し処理で開始位置を制御する操作例です。動画の画面や設定項目は現在のJobAutoと異なる場合があります。開始位置を変更したあとは、繰り返しの対象リストとテスト実行結果を確認してください。

「開始行」を設定するほか、カウンター変数で最初の数件をスキップする方法もあります。変数による制御方法やExcelの行ループにも応用する場合は、JobAutoでループ処理の開始位置を指定する方法(FAQ)もご確認ください。

8.設定変更後は対象リストを再読込して確認する

「取得範囲」「XPath」「フィルター」「除外」などを変更した場合は、「再読込」を実行して「繰り返しの対象リスト」を確認します。 ロボットを全実行する前に、必要な店舗がすべて含まれているか、不要な行が混在していないかをチェックしてください。

  1. Webページ上の一覧が読み込まれているか確認する。
  2. 「要素の繰り返し処理」の設定を変更する。
  3. 「再読込」をクリックし、対象リストを更新する。
  4. 対象件数と対象要素の内容を確認する。
  5. 問題がなければロボットをテスト実行する。

繰り返し範囲が想定どおりにならない場合の確認ポイント

症状確認する設定
必要な要素の一部しか取得できない「取得範囲」を「拡張した範囲の要素」に変更
不要な要素まで対象になるXPathの除外
特定のHTML構造だけ対象にしたいXPathのフィルター/XPathの直接編集
表示文字で対象を絞りたい表示値のフィルター
最後の要素だけ処理したい開始行に -1 を指定
設定変更しても対象が変わらない再読込して対象リストを確認
実行のたびに対象が変わるXPathや要素指定の安定性を確認

このページで扱うのはWebページ内の要素の繰り返しです。検索結果が複数ページに分かれている場合は、ページ移動を組み合わせる必要があります。詳しくはページをまたがって繰り返し処理する方法をご確認ください。

一覧の各行から文字や値を取得する場合は、繰り返し処理内で「値取得」アクションを使用します。Webページから文字・値を取得する方法も参考にしてください。


関連するマニュアル・ナレッジ

JobAutoのブラウザ操作ナレッジ一覧へ戻る

JobAutoでアプリの一覧を繰り返し操作するRPAサンプル

★サンプルの説明・概要

JobAutoを使用して、アプリケーションの一覧を繰り返し操作するRPAサンプルです。

アプリの一覧画面で行をクリックし、詳細情報を取得してExcelへ入力する処理を繰り返し実行しています。

行のインデックスを変数で指定し、処理が終わるたびに変数へ1を加算することで、次の行へ処理を進めます。

また、検索結果の件数とExcelへ書き込んだ件数を比較し、繰り返し処理を終了する方法も紹介しています。


★サンプル動画

アプリの一覧を繰り返し操作し、取得した詳細情報をExcelへ入力する操作例を動画で紹介します。


★サンプルの処理内容

このサンプルでは、以下の処理を行っています。

  1. 繰り返し処理を開始する前に、検索結果の件数を取得する
  2. アプリの一覧で、インデックスを指定して行をクリックする
  3. クリックした行の詳細情報を取得する
  4. 取得した情報をExcelへ書き込む
  5. 行を指定する変数に1を加算し、次の行を処理する
  6. Excelへ書き込んだ件数と検索結果の件数を比較し、一致したら繰り返し処理を終了する

行のインデックスに変数を使用する

アプリの一覧で行をクリックするアクションでは、どの行をクリックするかをインデックスで指定します。

このインデックスに変数を使用することで、繰り返し処理のたびにクリックする行を変更できます。

例えば、1行目をクリックして処理を行った後、インデックスを指定している変数に1を加算します。これにより、次の繰り返しでは2行目が処理されます。

繰り返し処理の終了条件を設定する

繰り返し処理では、終了条件を設定することも重要です。

このサンプルでは、繰り返し処理を開始する前に検索結果の件数を取得しています。

そして、繰り返し処理の最後に、Excelへ書き込んだ件数と検索結果の件数を比較します。

両方の件数が一致した場合は、繰り返し処理を終了するように設定しています。

このように、行を指定する変数の値を変更する処理と、件数を比較する終了条件を組み合わせて、一覧の繰り返し操作を行っています。

なお、この動画は2019年に公開されたサンプル記事で紹介されているものです。アプリケーションやJobAutoの画面、操作方法は制作当時と異なる場合があります。


関連するサンプル

アプリケーションで繰り返し操作を行う方法や、プルダウンの選択操作については、以下のサンプルも参考にしてください。

JobAutoのアプリケーション・メール操作サンプル一覧へ戻る

JobAutoのRPAサンプル一覧へ戻る

JobAutoで共通部品から親ロボットに戻る方法|正常・エラーを返す

★アクションの説明、概要

JobAutoの共通部品から、 呼び出し元のロボットへ戻る方法について説明します。

「親ロボットに戻る」アクションでは、 共通部品から呼び出し元のロボットへ 「正常」または「エラー」を返すことができます。

「正常」を返した場合は、 親ロボットで共通部品が正常に処理されたものとして 後続の処理を実行します。

「エラー」を返した場合は、 親ロボットで共通部品の実行中に エラーが発生したものとして扱われ、 設定されているエラーハンドリングを実行します。

共通部品の処理結果によって、 親ロボットへ正常・エラーを返し分けたい場合に使用します。


★アクションの作成方法


★アクションの設定画面について

アクション設定画面の設定項目について説明します。

1.基本設定

1-1.戻り値

・ 正常

共通部品の呼び出し元となる親ロボットへ「正常」を返します。親ロボットでは、共通部品が正常に処理されたものとして後続の処理を実行します。

・ エラー

共通部品の呼び出し元となる親ロボットへ「エラー」を返します。親ロボットでは、共通部品でエラーが発生したものとして、「共通部品の呼び出し」に設定されているエラーハンドリングを実行します。


2.高度な設定

2-1.アクション有効

このアクションを無効にする場合は、チェックを外します。


3.エラー発生時の対応

3-1. エラー時の処理

エラーが発生したときの設定を行います。詳細はこちらをご確認ください。

3-2.基点となる条件分岐

「エラー時の処理」で「条件分岐の次のフローに移動」を選択した場合に設定します。アクションでエラーが発生したときの移動先となる条件分岐を選択します。

3-3. エラー時にログ出力

エラーが発生したときにログに出力するか設定します。スケジュール実行したときのログへ出力されます。エラーとして扱わない場合は、チェックを外します。詳細はこちらをご確認ください。


共通部品から親ロボットへ戻る場合

共通部品の処理中に、 呼び出し元のロボットへ正常またはエラーを返したい場合は、 「親ロボットに戻る」アクションを使用します。

戻り値として 「正常」または「エラー」を選択し、 親ロボット側での処理を制御できます。

正常を返して親ロボットへ戻る場合

共通部品の処理を正常として終了し、 親ロボットの後続処理を続けたい場合は、 戻り値で「正常」を選択します。

親ロボットでは、 共通部品が正常に処理されたものとして扱われ、 「共通部品の呼び出し」より後の処理を実行します。

エラーを返して親ロボットへ戻る場合

共通部品の処理結果を 親ロボット側でエラーとして扱いたい場合は、 戻り値で「エラー」を選択します。

親ロボットでは、 共通部品でエラーが発生したものとして扱われ、 「共通部品の呼び出し」に設定されている エラーハンドリングを実行します。

正常とエラーの違い

戻り値親ロボット側の動作
正常共通部品が正常に処理されたものとして、 後続の処理を実行します。
エラー共通部品でエラーが発生したものとして、 設定されているエラーハンドリングを実行します。

エラーの場合でも変数の値を返す場合

「エラー」で親ロボットへ戻った場合でも、共通部品から親ロボットへ変数の値を返すことができます。

共通部品から親ロボットへ返す値は、 「共通部品の呼び出し」の 「戻り値」で設定します。

エラーの内容や処理結果などを 変数へ設定して親ロボットへ返すことで、 親ロボット側のエラー処理で その値を使用できます。

「共通部品の呼び出し」と「親ロボットに戻る」の違い

アクション用途
共通部品の呼び出し親ロボットから共通部品を実行し、 引数や戻り値を使って 値を受け渡します。
親ロボットに戻る共通部品から親ロボットへ 正常またはエラーを返します。

共通部品でエラーを判定して親ロボットへ返す場合

共通部品内で処理結果を確認し、 その結果によって 親ロボット側でエラー処理を行いたい場合に 「親ロボットに戻る」を使用できます。

  1. 親ロボットから「共通部品の呼び出し」で 共通部品を実行します。
  2. 共通部品内で必要な処理を行います。
  3. 共通部品内で処理結果を判定します。
  4. 正常な場合は、 「親ロボットに戻る」で「正常」を返します。
  5. エラーとして扱う場合は、 「親ロボットに戻る」で「エラー」を返します。
  6. エラーの場合は、 親ロボットの「共通部品の呼び出し」に設定されている エラーハンドリングを実行します。

親ロボットでエラーにならない場合の確認順序

  1. 「親ロボットに戻る」の戻り値が 「エラー」になっているか確認します。
  2. 親ロボット側の 「共通部品の呼び出し」に エラー時の処理が設定されているか確認します。
  3. 共通部品内で 「親ロボットに戻る」が 実際に実行されるフローになっているか確認します。
  4. エラー時にも変数を返す場合は、 「共通部品の呼び出し」の戻り値設定を確認します。
  5. 親ロボット側の格納先変数が 正しく設定されているか確認します。
  6. 「高度な設定」の「アクション有効」に チェックが入っているか確認します。
  7. 実行ログを確認し、 共通部品内のどこまで処理されているか確認します。

関連する共通部品・その他操作