「繰り返し(表)」とは
RKシリーズの繰り返し処理には、前回解説した「すべての要素」に加えて、表型変数を専用的に処理する「繰り返し(表)」というアクティビティが存在します。
このアクティビティは、表型変数に格納されたデータを上から順に1行ずつ走査し、各行に対して同じ処理を繰り返し実行します。最終行の処理が終わると、自動的に繰り返しを抜ける特性を持っています。
表形式のデータを扱う業務は非常に多く、Excelのデータをシステムに転記する、顧客リストから一括でメールを送信する、受注データを順に登録する—といった場面で「繰り返し(表)」は欠かせない存在です。
「現在の行1」変数の仕組みと動作
「繰り返し(表)」アクティビティを配置すると、自動的に「現在の行1」という変数が生成されます。この変数は、繰り返しの内部でのみ使用でき、繰り返しごとに異なる行のデータを保持します。
「現在の行1」の最大の特徴
「現在の行1」は、以下のような動作特性を持っています。
- 繰り返し内部専用:繰り返しの外側では使用できない(スコープに注意)
- 行ごとの値の代入:繰り返しのたびに、対象行のすべての列データが代入される
- 列名でアクセス:「現在の行1.A列」「現在の行1.B列」のように、列名を指定して個別の値を取得できる
実際の動作イメージ
具体的に、表型変数に以下のようなデータがあると仮定します。
| 行 | A列:顧客名 | B列:メールアドレス | C列:担当者 |
|---|---|---|---|
| 1行目 | 株式会社A | a@example.com | 山田 |
| 2行目 | 株式会社B | b@example.com | 鈴木 |
| 3行目 | 株式会社C | c@example.com | 佐藤 |
この表型変数を「繰り返し(表)」で処理した場合、「現在の行1」には以下のように値が代入されます。
| 繰り返し回数 | 現在の行1.A列 | 現在の行1.B列 | 現在の行1.C列 |
|---|---|---|---|
| 1回目 | 株式会社A | a@example.com | 山田 |
| 2回目 | 株式会社B | b@example.com | 鈴木 |
| 3回目 | 株式会社C | c@example.com | 佐藤 |
このように、1回目の繰り返しでは1行目のA列・B列・C列、2回目の繰り返しでは2行目のA列・B列・C列が「現在の行1」に順に代入されていきます。
列データの指定方法
繰り返しごとに値を変えたい箇所では、「現在の行1」の列を指定して使用します。指定方法は以下の通りです。
- 現在の行1.A列 → A列の値を取得
- 現在の行1.B列 → B列の値を取得
- 現在の行1.C列 → C列の値を取得
例えば、メール送信シナリオで宛先を動的に変えたい場合は、宛先欄に「現在の行1.B列」を設定することで、1回目は「a@example.com」宛、2回目は「b@example.com」宛、3回目は「c@example.com」宛に自動で切り替わります。
表型変数の作成方法
「繰り返し(表)」を使用するには、まず表型変数を作成する必要があります。RKシリーズでは、以下の方法で表型変数を作成できます。
方法1:Excelファイルから読み込む
「Excelファイルを読み込む」アクティビティを使用し、読み込み結果を表型変数に格納するのが最も一般的です。Excelのシート範囲を指定して読み込むと、自動的に表型変数として扱われます。
方法2:シナリオ内で手動で構築する
「表を作成」アクティビティを使用し、列名(A列、B列、C列など)を定義した上で、行データを順に追加していく方法もあります。動的にデータを蓄積したい場合に有効です。
方法3:Webスクレイピングなどから取得する
Webページのテーブル要素を取得したり、CSVファイルを読み込んだりした結果を、表型変数として格納することも可能です。
実践シナリオ例:受注データの一括登録
「繰り返し(表)」の実際の活用シナリオを一つ紹介します。以下は、Excelで管理している受注データを、Webの受注管理システムに自動で転記するフローです。
シナリオの流れ
- 事前準備:Excelファイル(受注データ.xlsx)から表型変数「受注リスト」を読み込む
- 「繰り返し(表)」アクティビティを配置し、「受注リスト」を指定する
- 繰り返し内部で「受注管理システム」の新規登録画面を開く
- 顧客名欄に「現在の行1.A列」を設定する
- 商品名欄に「現在の行1.B列」を設定する
- 数量欄に「現在の行1.C列」を設定する
- 単価欄に「現在の行1.D列」を設定する
- 登録ボタンをクリックする
- 「繰り返し(表)」が最終行まで処理すると、自動的に繰り返しを抜ける
このシナリオのメリット
上記のシナリオを「繰り返し(表)」を使わずに作成しようとすると、受注データの件数だけ同じアクティビティ群を並べる必要があり、非常に非効率です。受注データが100件ある場合、100セットのアクティビティが必要になります。
「繰り返し(表)」を使えば、アクティビティは1セットで済み、受注データが10件でも1000件でも同じシナリオで対応できます。新規の受注データが追加されても、シナリオを修正する必要はありません。
「繰り返し(すべての要素)」との使い分け
「繰り返し(表)」と「繰り返し(すべての要素)」は、どちらも複数のデータを順に処理する点では似ていますが、以下の点で明確に使い分けるべきです。
| 比較項目 | 繰り返し(表) | 繰り返し(すべての要素) |
|---|---|---|
| 対象変数 | 表型変数のみ | list型・表型の両方 |
| 列アクセス | 列名で直接アクセス可能(現在の行1.A列) | 要素単位でアクセス(要素名1) |
| 向いている場面 | 複数列を持つ表データの処理 | 1次元のリスト処理 |
| 可読性 | 列名が分かりやすく、直感的 | シンプルな構造に最適 |
結論として、複数列のデータを扱う場合は「繰り返し(表)」、単純な1次元リストを扱う場合は「繰り返し(すべての要素)」を使うのが基本です。
よくある落とし穴と回避方法
「繰り返し(表)」は便利な機能ですが、初心者の方が陥りやすい落とし穴もいくつかあります。
落とし穴1:表型変数が空の状態で実行する
表型変数が空(行数0)の状態で「繰り返し(表)」を実行すると、繰り返し内部の処理が一度も実行されません。これ自体はエラーになりませんが、意図した処理が行われていないことに気づかない場合があります。
回避方法:繰り返しの前に「もし〜ならば(If)」で表型変数の行数をチェックし、0行の場合は警告ログを出力する処理を追加しましょう。
落とし穴2:列名を間違えて指定する
「現在の行1.A列」と指定したつもりが、実際には表型変数の列名が「顧客名」「メール」「担当者」といった別名になっているケースがあります。その場合、正しく値が取得できません。
回避方法:表型変数を作成・読み込んだ後、必ず列名を確認してから「現在の行1.○○列」の指定を行いましょう。列名は変数パネルで確認できます。
落とし穴3:「現在の行1」のスコープを誤解する
「現在の行1」は「繰り返し(表)」の内部でのみ有効な変数です。繰り返しの外側で「現在の行1」を参照しようとしても、最後に処理された行の値しか取得できません(またはエラーになる場合もあります)。
回避方法:繰り返しの外側で特定の値を使いたい場合は、繰り返し内部で別の変数に値を退避させておくか、処理結果を表型変数に蓄積して後続で一括利用する設計にしましょう。
落とし穴4:繰り返し内部で元の表を書き換える
繰り返し処理の途中で、対象の表型変数に新しい行を追加したり、既存の行を削除したりすると、意図しない動作が発生する可能性があります。繰り返し中に参照元の表を変更することは原則として避けるべきです。
回避方法:処理結果は別の表型変数(「処理結果一覧」など)に格納し、元の表型変数は読み取り専用として扱いましょう。
複雑なシナリオでの基礎の重要性
シナリオを作成する上で、繰り返し処理は非常に多く使用されます。データの一括処理、複数ファイルの巡回、複数アカウントでの操作—どの業務でも繰り返しは必須の機能です。
さらに、シナリオが複雑になってくると、繰り返しが重複する(ネストする)ケースも多々あります。例えば、顧客リストを繰り返し(表)で走査しながら、各顧客に紐づく注文履歴をさらに繰り返し(すべての要素)で処理する—といった構造です。
このような複雑なシナリオになる場合は、基礎をしっかり押さえておくことが重要になります。「現在の行1」のスコープがどこまで有効か、どの変数がどの繰り返しに属しているかを正しく理解していないと、予期しない動作や変数の上書きが発生し、デバッグに大きな時間がかかってしまいます。
繰り返し処理はRPAシナリオの基本中の基本です。しっかりと習得して、業務自動化のスキルを高めていきましょう。
まとめ
「繰り返し(表)」は、RKシリーズの繰り返し処理の中で、表形式のデータを扱う際に最も適したアクティビティです。今回解説したポイントを整理すると、以下の通りです。
- 基本特性:表型変数のデータを上から順に1行ずつ処理し、最終行で自動的に抜ける
- 「現在の行1」:繰り返しごとに対象行のすべての列データが自動代入される変数
- 列アクセス:「現在の行1.A列」のように列名を指定して個別の値を取得できる
- 使い分け:複数列のデータなら「繰り返し(表)」、単純な1次元リストなら「繰り返し(すべての要素)」
- 注意点:空表のチェック、列名の確認、スコープの理解、元データの書き換え回避
「繰り返し(表)」を正しく理解し、他の繰り返し処理と組み合わせることで、より柔軟で堅牢なシナリオを作成できます。繰り返し処理の設計でお悩みの場合や、複数の繰り返しをネストさせる複雑なシナリオの実装を検討されている場合は、ぜひRKパートナーズまでご相談ください。貴社の業務特性に最適なシナリオ設計を支援させていただきます。
