★質問・概要
Q.JobAutoのブラウザ操作「要素の繰り返し処理」の中で「値取得」アクションを実行していますが、ループするたびに同じ場所の値を取得してしまいます。繰り返し対象ごとに異なる値を取得するには、どうすればよいですか?
★回答
「要素の繰り返し処理」を実行したときに表示される緑色の枠内で、値取得アクションを作成してください。また、値取得アクションの高度な設定にある「rangename」が、対象となるループを参照しているか確認してください。
値取得アクションが繰り返し対象の範囲を参照していない場合、Webページ全体から同じ要素を見つけ、毎回同じ値を取得してしまうことがあります。
1.値取得アクションを作り直す手順
ループの対象となる要素を指定した状態で、値取得アクションを作成し直します。
- 正しい値を取得できていない既存の「値取得」アクションを確認し、必要に応じて削除します。
- ブラウザ操作の「要素の繰り返し処理」アクションを実行します。
- ブラウザ上に、現在の繰り返し対象を示す緑色の枠が表示されることを確認します。
- 緑色の枠の内側にある、値を取得したい文字や要素を対象にして、新しい「値取得」アクションを作成します。
- 作成した「値取得」アクションを、要素の繰り返し処理の範囲内に配置します。
- 値取得アクションの「rangename」が対象ループを参照していることを確認し、繰り返し実行して取得値を検証します。
重要なのは、ループの中にアクションを配置するだけでなく、値取得の操作対象を、その回の繰り返し範囲内に指定することです。
2.「rangename」の設定を確認する
「要素の繰り返し処理」アクションには、基本設定の「名前」でループ名を設定できます。
一方、「値取得」アクションの高度な設定にある「rangename」は、値を探す範囲を指定する設定です。
| アクション | 設定項目 | 確認する内容 |
|---|---|---|
| 要素の繰り返し処理 | 基本設定の「名前」 | 繰り返し範囲を識別するループ名 |
| 値取得 | 高度な設定の「rangename」 | 上記のループを参照していること |
「rangename」が anywhere になっている場合は、Webページ全体から要素を探すため、意図したループ内の値が取得されないことがあります。対象のループ名を選択しているか確認してください。
ループ名と「rangename」の関係については、JobAutoでWebページの一覧・表を繰り返し処理する方法をご確認ください。
3.正しい値を取得できる場合の例
例えば、Webページの一覧に3行のデータがある場合、各行を繰り返し対象に指定し、その行の中で値取得を行います。
| 繰り返し | 対象となる行 | 取得する値の例 |
|---|---|---|
| 1回目 | 1行目 | 商品A |
| 2回目 | 2行目 | 商品B |
| 3回目 | 3行目 | 商品C |
正しく設定できていれば、各回の繰り返し対象に応じて「商品A」「商品B」「商品C」を取得できます。毎回「商品A」など同じ値が取得される場合は、ループ範囲と値取得アクションの参照先を確認してください。
4.アクションを作り直しても改善しない場合
緑色の枠内で値取得アクションを作り直しても改善しない場合は、次の項目を確認してください。
- rangename:値取得アクションが
anywhereや別のループを参照していないか。 - アクションの配置:値取得アクションが「要素の繰り返し処理」の範囲内に配置されているか。
- XPathなどの要素指定:特定の行や固定された要素だけを指定していないか。必要に応じてXPath・Attribute・Value・要素のインデックスを確認します。
- 繰り返しの対象リスト:ループの設定画面で目的の行や要素が対象になっているか。設定変更後は「再読込」で確認します。
- 取得結果:各回に取得した値を確認し、繰り返し対象が変わるたびに取得値も変化するか検証します。
なお、同じ変数へ値を取得する設定では、繰り返すたびにその変数の内容が更新されます。すべての取得値を後で利用したい場合は、繰り返しの中で必要な保存・転記処理を行ってください。
関連するマニュアル・FAQ
- JobAutoでWebページの一覧・表を繰り返し処理する方法:ループの設定と繰り返し範囲の指定
- JobAutoでWebページの文字・値を取得する方法:値取得アクションとrangenameの設定
- JobAutoでループをコピーするとエラーになる場合の対処方法:ループ名と参照先の確認
- 関連するフォーラムの質問・回答を見る
