UiRPA(アソシエイト資格試験)の模擬試験の答えと解説　No.29～No.38

前回の記事の続きになります。
前回までの記事をまだご覧になられていない方は

https://qiita.com/y-matsunaga/items/946d6ee5f1bc91a2d2b3

https://qiita.com/y-matsunaga/items/f5321a510ef024adeb87

https://qiita.com/y-matsunaga/items/2f387f8567852506c47d

をご覧になってから読んでいただければと思います。

それでは早速始めていきます。

### NO.29 [範囲を読み込み (Read Range)] アクティビティを使用して Microsoft Excel ファイルから抽出したデータを格納するためにはどのデータタイプを使用しますか。

1. Data Table (データテーブル)
2. Object (オブジェクト)
3. String (文字列)
4. Array (配列)

<details><summary>答えを見る</summary>

**1.Data Table (データテーブル)**

**範囲を読み込み (Read Range)] アクティビティ とは**

Excel の範囲の値を読み取り、DataTable 型変数に格納します。範囲が指定されていない場合、スプレッドシート全体を読み取ります。範囲をセルとして指定した場合は、そのセルを開始セルとする範囲全体を読み取ります。

公式ドキュメント：[範囲を読み込み (Read Range)](https://docs.uipath.com/activities/lang-ja/docs/excel-read-range)

</details>

### No.30 [CSV を読み込み (Read CSV)] アクティビティを使用して CSV ファイルを読み込む場合、出力側の DataTable (データテーブル) で列名を指定することによりデータにアクセスできるようにするために、UiPath Studio 2020.10 にて有効にする必要があるプロパティはどれですか。

1. 表示形式を保持 (PreserveFormat)
2. 区切り記号 (Delimiter)
3. 引用符を無視 (IgnoreQuotes)
4. 先頭行をヘッダーとする (Has headers)

<details><summary>答えを見る</summary>

**4.先頭行をヘッダーとする (Has headers)**

**[CSV を読み込み (Read CSV)] アクティビティ とは**
CSVとはComma Separated Valueの略でカンマで区切られたデータファイルのことです。
指定した CSV ファイルからすべてのエントリを読み取ります。

**[CSV を読み込み (Read CSV)] アクティビティ で設定できるオプション**

**区切り文字**
CSV ファイルの区切り文字を指定します。[Tab]、[Comma] (,)、[Semicolon] (;)、[Caret] (^)、または [Pipe] (|) を指定できます。

**エンコード**
使用するエンコードの種類です。各文字エンコードのコードの完全なリストは、こちらにあります。使用するエンコードの種類を指定するには、[名前] フィールドの値を使用します。エンコードの種類が指定されていない場合、アクティビティはファイルのバイト オーダー マークを検索してエンコードを検出します。バイト オーダー マークが検出されない場合は、システム ANSI コード ページが既定で選択されます。このフィールドは String 型変数をサポートします。

**先頭行をヘッダーとする**
CSV ファイルの最初の行をヘッダー行とみなす必要があるかどうかを指定します。false に設定すると、出力データ テーブルの列は、既定の名前を持つことになります。

**引用符を無視**
ファイル読み取り時に引用符を無視するかどうかを指定します。

取り込んだデータテーブルについて、「列名」を使って列を指定できるようにするためには、「先頭行をヘッダーとする」オプションを有効にする必要があります。

公式ドキュメント：[CSV を読み込み (Read CSV)](https://docs.uipath.com/activities/lang-ja/docs/read-csv-file)

</details>

### No.31 DataRow (データ行) オブジェクトから特定の列を読み取るアクティビティはどれですか。

1. [行項目を取得 (Get Row Item)]
2. [トランザクション アイテムを取得 (Get Transaction Item)]
3. [データ行を削除 (Remove Data Row)]
4. [データ テーブルをフィルター (Filter Data Table)]

<details><summary>答えを見る</summary>

**1.[行項目を取得 (Get Row Item)]**

DataTable や DataRow の特定の列の値を読み取るには、[行項目を取得] アクティビティを使用します。

DataTable や DataRowに関してはこちらの記事が分かりやすいのでご参照ください。

参考記事：[UiPathのDataTableについておさらいしてみた (cresco.co.jp)](https://www.cresco.co.jp/blog/entry/7235/)

</details>

### No.32 [繰り返し (コレクションの各要素) (For Each)] アクティビティを使用して [Outlook メールメッセージを取得 (Get Outlook Mail Messages)] アクティビティの出力値を反復処理 (ループ) する場合、TypeArgument プロパティをどのように設定しますか。

1. System.Net.Mail.MailMessage
2. System.Net.Mail.Attachment
3. UiPath.Mail.MailmessageExtensions
4. System.Web.UI.WebControls.MailMessageEventArgs

<details><summary>答えを見る</summary>

**1. System.Net.Mail.MailMessage**

[繰り返し (コレクションの各要素) (For Each)] アクティビティを使用するには、繰り返すデータの型を指定してやる必要があります。

そして、**Outlook から取得したデータのデータ型は、MailMessage 型と**なります。

参考資料：[UiPathでOutlookを使ってメール受信＋作業自動化を実現する方法 – RPAひろば (rpahiroba.com)](https://www.rpahiroba.com/2018/10/29/uipath%E3%81%A7outlook%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%A1%E3%83%BC%E3%83%AB%E5%8F%97%E4%BF%A1%EF%BC%8B%E4%BD%9C%E6%A5%AD%E8%87%AA%E5%8B%95%E5%8C%96%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99/)

</details>

### No.33 [Excel アプリケーション スコープ (Excel Application Scope)] アクティビティ を使用する場合、直接 .xlsx ファイル内部で表を順に並べるために使用するアクティビティはどれですか。

1. [テーブルを並べ替え (Sort Table)]
2. [データテーブルの並べ替え (Sort Data Table)]
3. [範囲を選択 (Select Range)]
4. [テーブル範囲を取得 (Get Table Range)]

<details><summary>答えを見る</summary>

**1.[テーブルを並べ替え (Sort Table)]**

Excelファイルに対しての操作は、[Excel アプリケーション スコープ (Excel Application Scope)] アクティビティで、操作したいExcelファイルを指定した上で、そのスコープ内部に、各アクテビティを設置するかたちになります。

エクセル操作に関するドキュメントを置いておきますので是非目を通してください。

公式ドキュメント：[表を並べ替え (Sort Table) ](https://docs.uipath.com/activities/lang-ja/docs/excel-sort-table)
公式ドキュメント：[範囲を選択 (Select Range) ](https://docs.uipath.com/activities/lang-ja/docs/excel-select-range)
公式ドキュメント：[表の範囲を取得 (Get Table Range) ](https://docs.uipath.com/activities/lang-ja/docs/excel-get-table-range)
公式ドキュメント：[データ テーブルを並べ替え (Sort Data Table) ](https://docs.uipath.com/activities/lang-ja/docs/sort-data-table)

Excelファイルを直接編集して表を並べ替えるには、[テーブルを並べ替え (Sort Table)]（＝表を並べ替え）アクティビティを使用します。

:::note alert
なお、[データテーブルの並べ替え (Sort Data Table)] アクティビティは、[Excel アプリケーション スコープ (Excel Application Scope)] アクティビティ内で使用するアクティビティではありません。データテーブルの並べ替えオブジェクトで操作するのは、UiPath上にある DataTable 変数になります。
:::

</details>

### No.34 [範囲を読み込み (Read Range)] ワークブック アクティビティの使用に必要な環境はどれですか。

1. .xlsx ファイルと動作し、Excel がインストールされている必要はない。
2. .xls ファイルとのみ動作し、Excel がインストールされている必要はない。
3. .xls と .xlsx ファイルと動作し、Excel がインストールされている必要がある。
4. .xlsm とのみ動作し、Excel がインストールされている必要がある。

<details><summary>答えを見る</summary>

**1..xlsx ファイルと動作し、Excel がインストールされている必要はない。**

:::note alert
[範囲を読み込み (Read Range)]は、ワークブック アクティビティのものと、Excel アプリケーション スコープのものと、同じ名前のアクティビティが２つ存在します。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/9ee697ec-5164-2c8c-4f0a-0e19db316017.png)

今回問われているのは、ワークブック アクティビティのほうになります。

ワークブック アクティビティについては、特にExcelがインストールされている必要はありません。

なお、[Excel アプリケーション スコープ (Excel Application Scope)] アクテビティ内で動作するアクテビティについては、PC に Microsoft Excel アプリケーションがインストールされている場合のみ、使用することができます。

[Excel アプリケーション スコープ (Excel Application Scope)] アクテビティで使用できる拡張子には、.xls  .xlsx .xlsm があります。

公式ドキュメント：[Excel アプリケーション スコープ (Excel Application Scope)](https://docs.uipath.com/activities/lang-ja/docs/excel-application-scope)

</details>

### No.35 .xlsx ファイルに DataTable (データテーブル) を書き込む必要がありますが、そのファイルが存在しません。DataTable の書き込みに [Excel] の [範囲を書き込み (Write Range)] アクティビティを使用した場合、何が起こりますか。

1. プロセスが例外をスローする。
2. ファイルが作成されても、そのファイルにはデータは存在しない。
3. ファイルが作成され、データはファイルの内部に格納される。
4. プロセスはファイルを作成することなく続行する。

<details><summary>答えを見る</summary>

**3.ファイルが作成され、データはファイルの内部に格納される。**


[範囲を書き込み (Write Range)] アクティビティは、[Excel アプリケーション スコープ (Excel Application Scope)] アクティビティ内で動作するアクティビティです。
[Excel アプリケーション スコープ (Excel Application Scope)] アクティビティは、操作するExcelファイルを指定して動作させますが、指定したExcelファイルが存在しない場合には、新しいExcelファイルが作成されます。
指定したファイルが存在しない場合は、新しい Excel ファイルが作成されます。

公式ドキュメント：[Excel アプリケーション スコープ (Excel Application Scope)](https://docs.uipath.com/activities/lang-ja/docs/excel-application-scope)

そして、 [範囲を書き込み (Write Range)] アクティビティを使用時、指定したシートが存在しない場合には、新しいシートが作成されます。
シートが存在しない場合は、[シート名] プロパティに指定した値で新しいシートが作成されます。

公式ドキュメント：[範囲に書き込み (Write Range) ](https://docs.uipath.com/activities/lang-ja/docs/excel-write-range)

今回の場合、対象のファイルが存在しませんので、新しいExcelファイルが作成されます。そして、その新規作成されたExcelファイルの中に、対象とするシートがありませんので、新しいシートが作成され、処理が実行されます。

</details>

### No.36 Native 画像スクレイピング (Native screen scraping) メソッドはどのように動作しますか。

1. バックグラウンドで実行される。
2. 非表示のテキストを抽出する。
3. テキスト位置を抽出する。
4. Citrix をサポートする。

<details><summary>答えを見る</summary>

**3.テキスト位置を抽出する。**

画面スクレイピングメソッド（指定した UI 要素や .pdf ファイルなどのドキュメントからデータを抽出することができるアクティビティ）には、下記、3つの種類があります。

**フルテキスト**
[フルテキスト] は既定のメソッドです。高速で正確ですが、[ネイティブ] メソッドと違ってテキストの画面座標を抽出することはできません。

**ネイティブ**
[ネイティブ] メソッドは、グラフィックス デバイス インターフェイス (GDI) でテキストをレンダリングするように設計されたアプリケーションでのみ機能します。

**（補足）グラフィックス デバイス インターフェイス (GDI) とは**
>GDIとは、Windowsに搭載された、グラフィック処理を行うプログラムのことである。
GDIは、主に画面表示や印刷をコントロールする。GDIを用いてアプリケーションソフトの出力を行えば、機種や装置の違いを補正し、出力命令をプリンタドライバやディスプレイドライバが処理できる形に変換してから、それぞれのドライバに送ることができる。
ちなみに、GDIで対処しきれない高速な描画や動画、3DCGなどの処理を行うためのAPIが、Microsoft社によって提供されているDirectXである。
[Graphic Device Interfaceとは何？ Weblio辞書](https://www.weblio.jp/content/Graphic+Device+Interface)

**OCR**

OCR は 100％ 正確というわけではありませんが、他の 2 つのメソッドでは抽出できないテキストを抽出するのに便利な場合があり、Citrix を含むすべてのアプリケーションで機能します。

**（補足）Citrix とは**
簡単に言うと、シトリックスシステムズ社が手掛ける、コンピュータの仮想化や遠隔操作のソフトウェアのことです。

それぞれの違いを表にまとめると下記の通りになります。
| 機能メソッド | 速度 | 精度 | バックグラウンド | テキスト位置の抽出 | 隠されたテキストの抽出 | Citrixサポート |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|  フルテキスト | 10/10  | 100%  |  ○ |  × | ○ |  × |
|  ネイティブ |  8/10 |  100% |  × | ○  | ×  | ×  |
| OCR |  3/10 |  98% |  × | ○  | ×  | ○  |

公式ドキュメント：[出力メソッドまたは画面スクレイピング メソッド](https://docs.uipath.com/studio/lang-ja/docs/output-or-screen-scraping-methods)

ロボットが画面の内容を読み取る際に、フルテキストは、要素の違いを考えることなく、文章を全て読み取ります。ネイティブはGDIを利用して、OCRは画像認識技術を使用して、要素を区別します。
ネイティブとOCRは、画面に表示されているものしか認識できません。対して、フルテキストは、バックグラウンドで、しかも画面に表示されていないテキストも読み取ることができます。
OCRは文字の認識を誤ることもあり、不正確な部分がありますが、Citrix社の仮想PC上の文字を認識することができます。

</details>

### No.37 キュー アイテムのトランザクション処理がすべてのステータスを遷移した場合、その正しい順序を指定してください。

1. 失敗 (Failed)
2. 進行中 (In Progress)
3. 成功 (Successful)
4. リトライ済み (Retried)

<details><summary>答えを見る</summary>

**2→1→4→3**

すべてのステータスを遷移することがポイントです。
下記、図を参照し、処理がどのように遷移するか理解しましょう。
>**キュー アイテムのステータスの遷移**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/8e8b3f06-293c-5351-757b-1021b59d3056.png)
公式ドキュメント：[キュー アイテムのステータス (uipath.com)](https://docs.uipath.com/orchestrator/lang-ja/docs/queue-item-statuses)

</details>

### No.38 Orchestrator 「アセット (Asset)」の特徴は何ですか。

1. アセットは DataTable (データテーブル) 変数を格納できる。
2. アセット値は各ユーザーごとに定義できる。
3. アセットの作成後、アセットタイプが変更できる。
4. すべてのアセットタイプのすべての値が暗号化されている。

<details><summary>答えを見る</summary>

**2.アセット値は各ユーザーごとに定義できる。**

**アセットとは**
アセットとは通常、異なるオートメーション プロジェクトで使用可能な共有の変数または資格情報を意味します。アセットを使用して固有の情報を保存することで、ロボットがその情報に容易にアクセスできるようになります。

公式ドキュメント：[アセットについて (uipath.com)](https://docs.uipath.com/orchestrator/lang-ja/docs/about-assets)

それぞれの選択肢を見ていきましょう。

**1.アセットは DataTable (データテーブル) 変数を格納できる。**
アセットの種類は下記4つです。
>1. Text - 文字列のみを格納できるアセットです。これは既定のオプションです。
>2. Bool - true または false の値のみを格納できるアセットです。このオプションを選択すると、[値] フィールドに 2 種類のラジオ ボタン (True、False) が表示されます。
>3. Integer - 整数値のみ格納できるアセットです。
>4. Credential - 認証情報を格納するアセットです。このオプションを選択すると、[値] フィールドが、[ユーザー名] および [パスワード] に置換されます。

データテーブルは格納できませんので誤りです。

**2.アセット値は各ユーザーごとに定義できる。**
アセットは、ユーザー毎に設定することができますので正しいです。

**3.アセットの作成後、アセットタイプが変更できる。**
アセットの作成後、アセットタイプを変更することはできませんので誤りです。

**4.すべてのアセットタイプのすべての値が暗号化されている。**
暗号化されるのは、Credential 型のアセットのみになりますので誤りです。

公式ドキュメント：[Orchestrator でアセットを管理する](https://docs.uipath.com/orchestrator/lang-ja/docs/managing-assets-in-orchestrator)

</details>

### まとめ

今回の１０問は下記の試験範囲のうち
「UiPath の自動化概念とあらゆるテクニック」「UiPath Orchestrator の概要」となります。

RPA の基礎
UiPath Studio の概要
変数と引数
セレクター
制御フロー
データ操作
**UiPath の自動化概念とあらゆるテクニック**
**UiPath Orchestrator の概要**

:::note warn
注意
この模擬試験は答えられて終わるのではなく、しっかりと説明できるようになることが重要です。
:::

最後に今回の記事作成に参考にさせていただいたサイトを共有します。

https://streamlineoperations.hatenablog.com/

最後まで見ていただいてありがとうございました。実戦ですごく大事な部分かと思います。
次は最後、中級コースやPDFの自動化、バージョン管理などです。最後まで頑張りましょう！！

続きはこちらからどうぞ！

https://qiita.com/y-matsunaga/items/8abbb8ececca4ef69bce