リスト(list)を和訳すると"一覧"ですが、世間を見渡すとあらゆる一覧表がありますよね。
食べ物のメニュー一覧、自分のお気に入りリストなどなど。
そして、RPAの世界では、データをリスト化することが、自動化処理に大きな意味を持ちます。
特に、繰り返し処理を組む際に、大半のケースで必要となる仕組みです。
ここでは、以下のアクティビティについて解説します。
リストのアクティビティ
- リストを作成/Create List
- 繰り返し (コレクションの各要素)
- リストの項目を読み込み/Read List Item
- リストに項目を追加/Append Item to List
- リストの項目を更新/Update List Item
もくじ
リストとは
アクティビティの解説を始める前に、リストとは何かを説明します。
リストは複数の値を記憶するアクティビティ
例えば、[後のために保存]アクションがありますが、これは値を1つ記憶するためのアクティビティです。
対してリストは、値を複数記憶するためのアクティビティです。
StudioXにこのようなデザインはありませんが、イメージは何となくつかめるのではないでしょうか。
そして、1つのリストに指定する値は、どんな値でもいいというわけではなく、属性を統一する必要があります。
属性とは、例えば、数値、文字列、日時がありますね。
属性には他にも沢山の種類がありますが、ひとまずはこの3つを押さえておくといいでしょう。
リストの特長
- 1つの名前に複数の値を記憶できる。
- 値は、全て同じ属性でなければならない。
- 属性は、数値、文字列、日時以外にも沢山存在する。
リスト作成の流れ
リスト作成の流れをおさえるために、ここでも[後のために保存]アクションと比較しながら説明します。
まずは、[後のために保存]アクションを見てみましょう。
[後のために保存]アクションでは、左辺に名前を指定(①)しますよね。
そして右辺に、属性を選択(②-1)した上で、値を入力(②-2)します。
続いて、リストを作成する流れを見ましょう。
リストの場合、最低2つのアクティビティが必要になります。
1つ目は、[Create List](リストを作成)アクションです。
[Create List](リストを作成)アクションでは、名前を指定(①)と属性の選択(②-1)します。
残る値の入力(②-2)は、2つ目のアクティビティ[Append Item to List](リストに項目を追加)で指定します。
[Append Item to List](リストに項目を追加)アクションを複数追加することで、1つのリストに複数の値を追加出来るようになっているわけですね。
後のために保存 | リスト |
|
|
作成したリストの使い方
作成したリストを使うには、[繰り返し (コレクションの各要素)]アクションが必要です。
[繰り返し (コレクションの各要素)]アクションは、リストに追加されている値を1つずつ取り出して処理するアクティビティです。
例えば上図のように組んで、"サンプルグループ"に2つの値"123","356"が追加されている場合、出力画面には2行の結果が出力されます。
参考までに。
リストの作成から、"123","356"を[出力]パネルへ表示するまでの全体像は、以下のようになります。

リストを作成/Create List
新しい空のリストを作成します。(ガイドはこちら)
新しい名前のリストを作成します。
ここでは、[データカテゴリ]と[新しいリスト]について解説します。
データカテゴリ
値の属性を指定します。
最も使用頻度の高い"数値"と"テキスト"は、予めリストに用意されています。
"その他"を選択すると、[データ型]が表示され、更に多くの項目から指定できるようになります。
それぞれのデータ型の値(=属性)は、以下のとおり。
属性の定義
Boolean
Boolean型を、リスト内データの属性とします。
Booleanとは、Yes/Noのように、2択の場合に用います。一般には、True/Falseと表現されます。
Int32
整数値を、リスト内データの属性とします。
[データカテゴリ]の"数値"は小数点OKな型ですが、こちらは"整数"であることに注意してください。
Object
オブジェクト型を、リスト内データの属性とします。
オブジェクト型とは、あらゆる属性の親に当たるものです。
データテーブル型、テーブル型、メールオブジェクト型など、様々な型の親なので、今挙げた属性は全てリストに追加出来るわけです。
逆に、どんなタイプの属性でも追加出来てしまうので、一般的にあまり使用するのはお勧めされていません。
ですが、開発者自身が混乱しないのであれば、使用しても差し支えないでしょう。
オブジェクト型とは
オブジェクト型について、もう少し具体的に説明します。
オブジェクトは様々な型の親と言いましたが、オブジェクトではない属性もあります。
それは、テキスト(String)型や、数値(Int32)型、日付(DateTime)型などで、1つの値しか記憶しないものです。
ところで、データテーブル(DataTable)型には、複数のデータが記憶できますよね。
それからメールオブジェクト型についてですが、1つの受信メール(メールオブジェクト)は、"受信日時"、"宛先"、"件名"、"本文"など、複数の項目から構成されています。
これらのように、複数の値から構成される属性は、全てオブジェクト型となります。
String
テキスト型を、リスト内データの属性とします。
[データカテゴリ]で、"テキスト"を指定した場合と同じです。
System.Data.DataTable
データテーブル型を、リスト内データの属性とします。
データテーブルについては、データテーブルとはを参照ください。
Array of[T]
配列型を、リスト内データの属性とします。
配列の属性は、"Array of[T]"を選択したタイミングで、以下の画面が表示されるので、そこで指定します。
配列型の詳細な使い方は割愛しますが、リストに近い特徴を持っており、複数の値を記憶します。
型の参照
上記にない属性を指定する場合に選択します。
開いて見ると、膨大に属性が表示されていますね。
とは言え、StudioXで利用するものは限られるため、利用の幅が大幅に広がるわけではありません。
ちなみに、日付型にする場合は、[mscorlib]-[System]-[DateTime]を選択します。
新しいリスト
記憶するリストの名前を指定します。
繰り返し (コレクションの各要素)
列挙される各要素に対して一連のアクティビティを実行します。(ガイドはこちら)
リストをはじめとした、複数データの集まり(=コレクション)から1件ずつ読み取りながら、処理を繰り返します。
ここでは、以下の項目について解説します。
- 繰り返し
- 次のコレクション内の各要素
- TypeArgument
- 現在のインデックス
繰り返し
現在の周回のデータ情報を記憶する名前を指定します。
既定では"item"ですが、必要に応じて意味を表す名前に変更するとよいでしょう。
次のコレクション内の各要素
参照するデータが格納されているコレクションを指定します。
ちなみに、指定できるコレクションとはどのようなものがあるのでしょうか。
一覧にまとめました。
指定可能なコレクション |
Excel |
[セル]-[セルの数式を読み込み]-[保存先] |
[ブック]-[シートを挿入]-[新しいシートの参照名] |
Word |
[テキストを読み込み]-[保存先] |
アプリとWebの自動化 |
[SAP]-[ステータスバーを読み取り]-[メッセージデータ] |
[URLを取得]-[保存先] |
[ダウンロードを待機]-[ダウンロードされるファイル] |
[テキストを取得]-[文字情報] |
[ユーザー名/パスワードを取得]-[後で使用するために次の名前で保存] |
データ |
[リスト]-[リストを作成/Create List]-[新しいリスト] |
[リスト]-[リストの項目を読み込み/Read List Item]-[保存先] |
ファイル/フォルダー |
[zip]-[ファイルを圧縮/zip圧縮]-[圧縮済みファイル] |
[zip]-[ファイルを展開/解凍]-[展開済みコンテンツのフォルダー] |
[テキスト]-[テキストをファイルから読み込み]-[出力先] |
[ファイル]-[ファイルを選択]-[選択したファイルパス] |
[ファイル]-[ファイル情報を取得]-[出力先] |
[フォルダー]-[選択したフォルダーパス] |
[フォルダー]-[フォルダー情報を取得]-[出力先] |
メール |
[メールの添付ファイルを保存]-[添付ファイル] |
共通 |
[日付とテキスト]-[テキストを変更]-[名前を付けて結果を保存] |
[日付とテキスト]-[テキストを左右に分割]-[左側のテキスト] |
[日付とテキスト]-[テキストを左右に分割]-[右側のテキスト] |
[日付とテキスト]-[日付を変更]-[結果をテキストとして保存] |
[HTMLコンテンツを作成]-[HTMLコンテンツ] |
[メッセージボックス]-[選択されたボタン] |
ver2021.10.5時点で洗い出した情報です。
大半は、コレクションとして指定しても実用的でなかったり、別途専用の繰り返しアクティビティが用意されていたりします。
TypeArgument
コレクション内データの属性を指定します。
[次のコレクション内の各要素]を指定した時点で、自動的に属性が選択されるため、特に変更は不要です。
現在のインデックス
現在の周回が何番目なのか、番号を記憶する名前を指定します。
番号は0番から開始し、処理が繰り返されると1加算されます。
例えば、データが3つ追加されているリストであれば、インデックスは0→1→2の順に遷移します。
アクティビティ | 実行結果 |
![]() |
![]() |
リストの項目を読み込み/Read List Item
リスト内の特定の項目の値を取得します。(ガイドはこちら)
リストから、指定した番号の位置にあるデータ(値)を取得します。
[繰り返し (コレクションの各要素)]アクションだと、データを上から順に読み取るところ、対して[Read List Item]アクションは、ピンポイントで値を取得できるという違いがありますね。
先に、使い方のサンプルを見た方が分かりやすいでしょう。
以下は、予め3つのデータを追加しているサンプルリストから、2番目の値を読み取って、クリップボードに記憶する構成です。
アクティビティ | 実行結果 |
![]() |
![]() |
ここでは、以下の項目について解説します。
- リスト
- 項目のインデックス(最初の項目は 0)
- 保存先
- TypeArgument
リスト
取得するデータが含まれているリストを指定します。
[リストを作成/Create List]アクションで作成した名前のみが対象となります。
項目のインデックス(最初の項目は 0)
取得するデータの番号を指定します。
タイトルに注釈があるとおり、最初のデータは番号が0になります。
保存先
読み取ったデータについて、名前を付けて記憶します。
TypeArgument
リスト内データの属性を指定します。
自動的に属性が選択されるため、特に変更は不要です。
リストに項目を追加/Append Item to List
指定したリストの最後に項目を追加します。(ガイドはこちら)
リストにデータを追加します。
ここでは、以下の項目について解説します。
- リスト
- 追加する項目
- TypeArgument
- 項目のインデックス
リスト
データを追加するリストを指定します。
[リストを作成/Create List]アクションで作成した名前のみが対象となります。
追加する項目
リストの最後に、指定の値を追加します。
代表的な属性であれば、それに合わせて[+]のメニューも変化します。
TypeArgument
リスト内データの属性を指定します。
自動的に属性が選択されるため、特に変更は不要です。
項目のインデックス
値を追加した後のインデックス数に、名前を付けて記憶します。
1つ値を追加したら、インデックスは"0"、2つ追加したら"1"となります。

リストの項目を更新/Update List Item
リスト内の特定の項目の値を更新します。更新された値がこれ以降のアクティビティで使用されたことを確認するには、このアクティビティの後に[リストの項目を読み込み]アクティビティを追加します。(ガイドはこちら)
リストへ追加済みの値について、内容を変更します。
ここでは、以下の項目について解説します。
- リスト
- 新しい値
- 項目のインデックス(最初の項目は0)
- TypeArgument
リスト
データを更新するリストを指定します。
[リストを作成/Create List]アクションで作成した名前のみが対象となります。
新しい値
書き換える値を指定します。
項目のインデックス(最初の項目は0)
更新する対象の、インデックス番号を指定します。
タイトルに注釈があるとおり、最初のデータは番号が0になります。
TypeArgument
リスト内データの属性を指定します。
自動的に属性が選択されるため、特に変更は不要です。
まとめ
リストを扱えるようになると、複数あるデータの編集が可能になるので、処理の幅が広がります。
ただ、ちょっと応用なアクティビティなので、扱いが難しいようではればExcelのアクティビティを代わりに使ってもいいでしょうね。
まとめます。
まとめ
- リストは、作成とデータの追加が別々のアクティビティになる。
- [繰り返し (コレクションの各要素)]は、リスト以外のコレクションが指定可能。
この記事で、何か1つでも新しい発見が得られたのなら、僕もうれしいです。