RPALT大阪Vol.4のLT内容 Connpassで繋がっていますか?-4 (概要書:イベント参加者の取得_invoke)

イベント参加者の取得_invoke.xamlをExcelエクスポートのファイルで作成したシナリオ説明書を次に示します。 (UiPathのシナリオで加工)
フローが掴めるようであれば、概要書として採用したいと思っています。

加工は、最初にシートをコピーして、オリジナルシートを作成します。
加工シートで、アクティビティー系だけを残します。
アクティビティはオリジナルシートにリンクさせて、詳細なパラメータを確認がすぐにできます。

このシナリオ概要書をどのように思われるか?
ご意見を聞きたいです。

RPALT大阪Vol.4のLT内容 Connpassで繋がっていますか?-3 (セレクタの変数化)

データスクレイピングが簡単ことは割って貰えたと思います。
なので、4回データスクレイピングして、データテーブルをマージすれば、簡単に作成できます。但し、RPALT専用のロボになってしまいます。

それでは、面白くない。
他のイベントに参加する際、RPALTの参加者が何人居るか知りたいじゃない。なので、セレクタを変数化することにしました。

セレクタの編集をクリックする。

セレクタに「aaname」というのが確認できます。
これが表を見つけるための「キー」です。
現在、「 セミナー講師枠(招待者のみ) 参加者 3人 」となっています。
今回は3人でしたが、毎回同じということはありません。
人数は変動するでしょう。また、この表が見つけられたら良いので、
セレクタを次のようにすることにしました。
「 *セミナー講師枠* 」
これで、セミナー講師枠という名前が含まれているテーブルは全て取り込めます。

こんな風にセレクタを決めていきExcelに登録しました。

データスクレイピングする際、これらを読み込んで、順番に表を探します。
表がなければ無視し、次のセレクタを読み込みます。

これで、読み込みたいデータテーブルが今までと全く違う名前でも、その名前を含む文字列をエクセルに登録すると、何でも取り込めます。

これで、ロボットを変更しなかければならなくなる可能性はかなり減少します。(Connpassさんが、まったく違う形式に変更すると、修正が必要)

これが、メンテナンスを最小限にする工夫の1例です。

RPALT大阪Vol.4のLT内容 Connpassで繋がっていますか?-2 (データスクレイピングの確認)

「RPALT大阪のイベント参加者」 のデータテーブルの一つを見本にスクレイピングする作業を記載します。
ターゲットは次のような表です。
この表を表示させてから、UiPathで操作します。

データスクレイピングするための手順を以下に示します。

1.データスクレイピングをクリックする。

2.要素を選択画面で次へをクリックする。

3.表の取得したいデータをクリックします。

4.表全体から抽出しますか?との質問が出てきます。
  「いいえ」をクリックします。
  「はい」がクリックできるのは、一つの表の時だけです。
  今回、幾つもの表が同じページに表示されています。
  その場合、表ごとに指定する必要があります。

5.第二要素を選択するため、次へをクリック

6.表から取得したいデータの最後を選択してクリックする 。

7.次のような画面になります。

8.その時、表は次のように取得されるデータの色が変わっています。

9.取得するデータに必要な情報を入力して、次へをクリックします。

10.取得されるデータの情報を確認できますので、終了をクリックします。

11.データが複数ページにわたるかを確認で、「いいえ」をクリックします。

12.データスクレイピングの命令の完成です。

とても簡単です。
私はこのスプレイピング機能でUiPathが大好きになりました。

RPALT大阪Vol.4のLT内容 Connpassで繋がっていますか?-1 (キーワード:、UiPath、データスクレイピング、セレクタ)

Connpassのイベント終了後のメール「参加者と繋がろう!」の参加者データをスクレイピングする方法を RPALT大阪Vol.1の案内で紹介しました。
その方法を投稿します。

対象とするデータは「RPALT大阪のイベント参加者」です。
ゴールはVol1~4まで4回全てに参加した強者を見つけることです。

絶対に必要なことは「イベント参加者」のデータをスクレイピングすることです。まず、それを考えてみましょう。
RPALTCommunityのイベント参加者のページを調べてみます。
次のように4つテーブルからデータを取り込む必要があります。

なので、①のテーブルを取り込み、これをメインテーブルとします。
     ②のデータを読み込んだ後、メインに結合
その後、③と④のデータも読み込んだ後に結合します。

データスクレイピングに関しては次の場所を見てください。
      Connpassで繋がっていますか?-2
       https://00m.in/Uipath_DataScraping

UiPathアカデミーで再勉強

最初、2018年に登録したのですが、全然やれませんでした。
真面目?に項目を読んでました。グーグル翻訳を利用して(日本語化は今ほどではありませんでした。)読んでましたが、分からないし、読んでもつまらないので、断念した経験があります。

UiPathアカデミーが改良されて、分かりやすくなっていることに気づきました。何となく我流でシナリオを作成していたので、再勉強しようと思います。

悩んだことを中心に記録しようと思います。
参考にして下さい

最終テスト

◆最終テスト
  77.8%でした。
Level1 Foundaiton(基礎)トレーニング最終テスト

1)
Save Attachments アクティビティは、すべての添付ファイルを以下のどれに保存できますか?

✖ 変数内 (添付ファイルオブジェクトのコレクションとして)
○ 絶対パス
○ 相対パス

複数の選択肢
2)
大きなプロジェクトでベストプラクティスとして考えられるのは次のうちどれでしょうか?

✖ 他のワークフローから呼び出すことのできる単一アクティビティのワークフローで一番使用されているアクティビティをカプセル化する
○ より小さなワークフローで大きいプロセスを分割していく
○ ワークフローを個別にテストする
○ 変数とワークフローにはわかりやすい名前をつける

複数の選択肢
3)
Citrix環境で、アプリケーションの操作に使用できるアクティビティは?

? クリックテキスト
? に入力
○ OCRテキストをクリック
○ 画像をクリック

複数の選択肢
4)
フローチャートワークフローはいつ使用すべきですか? (該当するものをすべて選択してください)

○ 多くの判別ブロックを持つプロセスがある場合
○ 前の状態へのループがあるプロセスをモデリングする場合
✖ 固定の順序で複数のアクティビティを実行する場合

複数の選択肢
5)
部分セレクタを生成する際にはどのレコーディング機能を使用しますか?

○ デスクトップ
○ ウェブ
? Citrix
? 基本

単一選択
6)
ウェブページからどのようにテーブルを抽出しますか?

✖ テキストを入手
○ データスクレイピング
✖ OCRのテキストを入手する

単一選択
7)
要素中の隠れているテキストを取得する際には、どのスクレイピングメソッドを使用するのがよいでしょうか?

✖ OCR
✖ 上記すべて
✖ ネイティブ
○ 全文

複数の選択肢
8)
一番正確にUI要素にアクセスすることができる方法はどれでしょうか?

? By コンテナ内に部分セレクターを含ませる
? By セレクターに動的変数を含ませる
○ 完全セレクターをしようする

複数の選択肢
9)
特定の条件でロボットの動作を分析するために、ロボットを手動で1ステップづつ実行できますか?

○ はい、ステップインとステップオーバーを使用します。
✖ はい、デバッグモードでワークフローを実行します。
? いいえ、できません。
○ はい、ブレークポイントを使用して、デバッグモードでワークフローを実行します。

複数の選択肢
10)
データテーブルの列はどのように識別するのがよいでしょうか?(該当するものをすべて選択)

○ 列名を使用する
✖ 行インデックスを使用する
✖ 行名を使用する
○ 列インデックスを使用する

複数の選択肢
11)
Generic 型の変数内に保存できるコンテンツの型はどれですか?

○ 数字
○ テキスト
○ True/False
○ 日付

複数の選択肢
12)
メールメッセージの送信に使用できるアクティビティを答えてください。

✖ IMAPメールメッセージを送信します。
○ Outlookメールメッセージを送信します。
○ SMTPメールメッセージを送信します。

複数の選択肢
13)
2017年の日付でのみ動作するようにするには、次のカレンダーページセレクターをどのように修正すればよいですか?
単一選択
14)
Citrix環境で、アプリケーションが特定の状態であることを確認するには、どうすればよいですか?

✖ WaitForReady プロパティを使用する。
? UI要素の属性をチェックする。
? 特定のUI要素が表示または非表示されるまで待機し、それに基づいて判別を行う。

単一選択
15)
ワークフローで使用できるアクティビティの一覧はどこで確認できますか?

✖ アウトラインパネル
○ 活動パネル
✖ プロジェクトパネル

単一選択
16)
Read RangeアクティビティでAddHeadersがチェックされている場合どうなるでしょうか?

○ 指定した範囲の最初の行が列名として扱われる
✖ 例外が返される
✖ 新規の行がexcelシートに追加される

単一選択
17)
Attach Windowアクティビティはどのような用途で使用されますか?

✖ 作業を行うブラウザコンテナを指定する場合
○ 作業を行う最上位のウィンドウコンテナを指定する場合
✖ javaウィンドウで作業していることを指定する場合

単一選択
18)
For Eachアクティビティを終了してワークフローの実行を続行するためには何を使用するでしょうか?

○ Breakアクティビティ
✖ Ifアクティビティ
✖ Terminate Workflowアクティビティ

単一選択
19)
Write Range アクティビティで、すでにデータを持っているExcelファイルにデータテーブルを書き込むために Range を “” に設定すると、どうなりますか?

○ 既存のデータは上書きされ、新しいデータのみが保持される。
✖ エラーがスローされる。
✖ 新しいデータが既存のデータに追加される。

単一選択
20)
どのレコーディングモードが完全セレクターを生成しますか

○ 基本記録
✖ デスクトップレコーディング
✖ ステップバイステップ録音

複数の選択肢
21)
Citrix 環境で、サイズやスタイルが同じように見えるテキストボックスを複数持つアプリケーションがあります。入力するテキストボックスを特定するには、どうすればよいでしょうか?

○ テキストボックスの近くにあり、ほかと区別できるテキスト/画像をクリックする。
✖ テキストボックス要素の属性を利用する。
○ テキストボックスの近くに、ほかと区別できるもの(テキスト/画像)がない場合は、特定できません。
✖ 部分セレクターを使用する。

単一選択
22)
「*」は何文字で置き換えられますか?

✖ 2文字以上
✖ 0文字
○ 0文字以上

複数の選択肢
23)
隠れているブラウザからテキストを抽出する際にはどのアクティビティを使用するのがよいでしょうか?

✖ 構造化データの抽出
✖ テキストを入手
✖ テキストを表示する
○ フルテキストを入手

単一選択
24)
Write Lineアクティビティで書き込まれた値はどこで見つけることができるでしょうか?

✖ コンソール
○ Outputペイン
✖ 変数

単一選択
25)
citrix環境にいない場合、画像オートメーションを動作させることは可能でしょうか?

○ 可能ですが、最後の手段として使用することを強くお勧めします
✖ できません、画像オートメーションは遠隔オートメーションにのみ動作します

単一選択
26)
指定された住所 (fullAddress という文字列変数) が特定の通り (streetName という文字列変数) で見つけることができるかどうかをテストするにはどうすればよいですか?

✖ streetName.Contains(fullAddress)
○ fullAddress.Contains(streetName)
✖ fullAddress.Has(streetName)
✖ streetName.Has(fullAddresss)

複数の選択肢
27)
Variablesパネルではどのような操作が実行できるでしょうか?

○ 変数のデータ型を変更する
○ 新しい変数を追加する
○ 変数のデフォルト値を設定する

複数の選択肢
28)
ベストプラクティスとして、ワークフローがローカルのデスクトップアプリケーションを使用するにはどのようにすべきでしょうか?

? アプリケーションのデスクトップショートカットでClick Imageアクティビティを使用してアプリケーションを開く
○ もう使用する必要がなければ、アプリケーションを閉じる
○ 対応するプロセスが実行しているか確認し、もしそうでない場合はOpen Application アクティビティを使用してアプリケーションを開く
? アプリケーションとインタラクティブになるにはセレクタを使用する

単一選択
29)
引数とはなんでしょうか?

✖ 変数型
✖ 変数
○ ワークフローの入力/出力パラメータ

単一選択
30)
ビジネスルールを定義する際にはどのようなワークフローを作成すべきでしょうか?

○ フローチャート
✖ ステートマシン
✖ シーケンス

単一選択
32)
myString という文字列変数を、将来使用するために、すべて大文字に変換するにはどうすればよいですか?

✖ Text プロパティを myString.ToUpper に設定して、Write Line を使用します。
○ Assign アクティビティと myString を左側で使用し、myString.ToUpper を右側で使用します。
✖ TargetType プロパティを String に設定し、TargetObject プロパティを myString に設定し、MethodName プロパティを ToUpper に設定して、Invoke Method アクティビティを使用します。

複数の選択肢
33)
バックグラウンドではどの入力メソッドが動作しますか?

○ ウィンドウメッセージ
✖ ネイティブ
○ タイプをシミュレート/クリック
✖ ハードウェアイベント

複数の選択肢
34)
シーケンスに最適な用途はどれですか?

✖ 意思決定を伴うようなワークフロー
○ 大きなプロジェクトで用いられるようなオートメーション作業の一部としての使用
○ 短く単純なワークフロー
✖ プロジェクトを開始する際の、メインのワークフローとしての使用

単一選択
36)
あるウェブページ中のアンカー要素を見つけるにはどのようにすればよいでしょうか?

✖ Find elementアクティビティを使用する
? Find Relative Elementアクティビティを使用する
? Find Childrenアクティビティを使用する

単一選択
37)
"Type Intoアクティビティで、プロパティパネルで「SimulateType」を選択した状態で”123[k(enter)]” を送るとどうなるでしょうか。

○ “123[k(enter)]”がタイプされる
✖ “123”をタイプした後にエンターキーが押される
✖ エンターキーは押されず”123”がタイプされる

複数の選択肢
38)
FullText メソッドの最も重要な利点を選択してください。

○ バックグラウンドで動作する。
○ 高速である。
✖ Citrix 環境で動作する。
○ 正確である。

単一選択
39)
テキストをスクレイプして数字だけ残す場合、どうやってスクレイプするのがよいでしょうか?(該当するものを全て選択)

✖ 背景を赤くする
○ 「数字のみで」Google OCRを使用する
✖ Microsoft OCR で scaleを 3 にセットする

単一選択
40)
UiPathはどのようにして画面上の要素を認識していますか?

✖ 画面座標を使用して認識している
○ UI要素およびそれらの親要素の属性を使用して認識している
✖ UI要素の位置を使用して認識している

単一選択
41)
「“abc”」というテキストが入力されたフィールドがあるとします。もしTypeアクティビティを使用して「“123”」というテキストを入力し、プロパティのSimulateTypeにチェックを入れ、EmptyFieldにはチェックを入れない場合、フィールド中のテキストはどのようになるでしょうか?

✖ abc123
○ 123
✖ abc

単一選択
42)
UiExplorerはどのような用途に使用できますか? 

○ UIツリーを探索する
✖ セレクタを作成し微調整する
✖ ワークフローツリーを探索する
✖ UiExplorerはUiPathのコンポーネントではない

単一選択
43)
利用できない場合があるUI要素のクリック操作を処理する最も効果的な方法は何ですか?

✖ Element Exists アクティビティを使用してから、Click アクティビティを使用する
✖ Click アクティビティの ContinueOnError プロパティを True に設定する
○ Try/Catch ブロック内に Click アクティビティを配置する

複数の選択肢
44)
リストと配列についての正しい説明はどれですか?

○ 配列とリストの要素には、インデックスを使用してアクセスできます。
? Add to Collection アクティビティを使用してリスト項目を追加することができます。
○ For Each ループアクティビティを使用してリストを反復処理することができます。
? 任意の数の要素を配列に追加することができます。

複数の選択肢
45)
テキストの位置を取得するために使用できるテキスト抽出方法は何ですか?(該当するものをすべて選択してください)

○ OCR
○ ネイティブ
✖ 全文共有
✖ クリップボード

レッスン13-プロジェクト構成

◆プロジェクト構成の概要
 ・Invoke Workflow アクティビティを使用する方法
 ・プロジェクトをクリーンかつ効率的に構成する方法

◆Video-ワークフロー・プロセスの構成方法(基礎①)
 ・求められるもの
  ①信頼性
   安定性が高い
  ②効率性
   開発時間の短縮
   異なる環境に容易に導入
  ③メンテナンス性
   他の担当者がわかりやすい
   メンテナンスを行いやすい
  ④拡張性
   新規プロセスを追加しやすい
 ・プロセスの細分化
  業務・操作単位でプロセスを作成する。
  それによって、他の業務で利用可能
  invokeで利用
 ・例外処理
  安定しないシーケンスはTry/Catchに入れる。
  エラー処理のためのログ出力は重要
  使用していないアプリケーションやウィンドウを閉じておく

◆Video-ワークフロー・プロセスの構成方法(基礎②)
 ・invokeの使い方(引数)

◆Video-ワークフロー・プロセスの構成方法(実践)
 ・コメントが難しい

◆ワークフロー
 ・ダウロードしても実行できない

◆ドキュメント
 ・ソース管理システムへのプロジェクトの接続
  https://studio.uipath.com/lang-ja/v2017.1/docs/connecting-your-project-to-a-source-control

◆演習1
 ・よくわからない

◆演習2
 ・よくわからない

◆要約
①概要
本章では、プロジェクトに信頼性、効率性、保守性、拡張性が必要であることを説明しました。 [Invoke Workflow (ワークフロー呼び出し)] の使用方法を学習し、さらにプロセス構成方法の最初から最後までを学習しました。
②学習した内容
・自動化プロジェクトの開発時は、以下のベストプラクティスに従うことが推奨されます。
 信頼性: エラーを処理し、理想的に回復できる強固で堅牢なワークフロー
 効率性: さまざまな方法で開発時間を削減するとともに、自動化がスムーズ      に実行されるよう管理
 保守性: 分業や、作業の引き継ぎが発生する環境では、プロジェクトの更新       が容易であることが重要
 拡張性: 新しいコンポーネントが追加できるよう、プロジェクトに可能な限      り事前の考慮が必要
・任意のシーケンスまたはフローチャートを選択し、右クリックして [Extract
  as Workflow] を選択すると、最初に選択したシーケンスまたはフローチャー トが [Invoke Workflow (ワークフロー呼び出し)] に置き換えられます。ワー クフローは実質的にプログラミング関数になり、パラメーターをこのワークフ ローの引数として使用します。
③ベストプラクティス
・時間をかけて各ワークフローに適したレイアウトを選択しましょう。

  • メイン: フローチャートまたはステートマシン
  • ビジネスロジック: フローチャート
  • UI インタラクション: シーケンス
  • フローチャートを使用することで、入れ子状の IF を回避
    ・プロセスを小さなワークフローに分割しましょう。
  • 分割したものを個別に開発、テスト
  • ワークフローの再利用
  • 分割ファイルで作業することによる、より効率的な共同作業
    ・必ず例外を処理しましょう。
  • 例外が発生しやすいワークフローを [Try Catch (トライキャッチ)] ブロックに配置
  • 外部から呼び出されたワークフローでも同様
  • リカバリシーケンスの設定
    ・ワークフローを読みやすいものにしましょう。
  • すべてのコンポーネントにわかりやすい名前を選択
  • 注記やコメントの使用
  • リアルタイムの実行状況のログ取得
  • 環境設定を Config ファイルに格納
    ・不要になったアプリケーションを終了させることで、常にクリーンな状態を維持しましょう。

◆小テスト
 80点でした。
1)
RPA開発者は、ワークフローにおけるランタイム例外に、どのように対処するべきですか?
○ 外部ワークフローファイルを呼び出す際に、Try/Catch ブロックを使用します
○ Catchブロック内の自動リカバリシーケンスを使用します
○ 例外イベントのすべてをログに記録します

複数の選択肢
2)
ワークフロー内では、どのような型の引数を使用できますか?

○ イン/アウト
? グローバル
? に
? でる

単一選択
3)
“Workflow2.xaml”は、再利用可能なワークフローにふさわしい名前ですか?

✖ はい
○ いいえ

単一選択
4)
ワークフロー内で入れ子状のIfアクティビティを使用することが推奨されるのは、どのような場合ですか?

○ 入れ子状のIfアクティビティの使用は避けるべきです
✖ Switchアクティビティを置き換える場合
✖ 一連の判別を使用する必要がある場合に毎回

単一選択
5)
シーケンシャルアクティビティに推奨されるレイアウトは、次のどれですか?(該当するものをすべて選択してください)

✖ 決定
○ シーケンス
✖ それぞれの
✖ フローチャート

レッスン 12 – デバッグと例外処理

◆デバッグと例外処理の概要
 ・デバッグ機能の使用方法
 ・FindElement または ElementExists を使用してアプリケーションと
  同期する方法
 ・TryCatch アクティビティの仕組みと使用方法

◆Video-デバッグと例外処理(デバッグ機能)
 ・アクティビティに分かりやすい名前を付ける
  エラーメッセージにアクティビティ名が表示されるので、
   特定しやすいように名前をつけることを習慣化する。
 ・デバッグでの実行
  デバッグモードで実行すると、通常より詳細なログを残すので、
   デバッグ時に役立つ。
 ・ハイライトオプション
  有効化すると、実行中の要素が赤枠で囲まれるの確認しやすい。
 ・低速ステップ
  実行速度を遅くすることができる。
 ・ローカルパネル
  現在の変数が表示される。
 ・ブレークポイント
  ワークフロー内に印を付けて、動きを止める場所を指定する。
 ・ステップ機能
  1コマンドずつ実行することが可能
 
◆Video-デバッグと例外処理(意図しない動作の解決方法)
 ・デバッグの手順
   ①アプリケーションの表示確認
   ②入力方法変更
   ③セレクターの設定確認
  これらの確認でも改善されないことも多い
   アプリケーション側のトラブル。
   実行しようとしている際のタイミングのズレ
 ・タイミングの問題に対処するアクティビティ
   ①要素を探す
   ②要素の有無を検出
   ③要素の消滅を待つ
  画像をベースで実施する場合
   ①画像を探す
   ②画像の有無を検出
   ③画像の消滅を待つ

◆Video-デバッグと例外処理(トライキャッチ – Try Catch)
 ・トライキャッチ(TryCatch)アクティビティの利用

◆ ワークフロー
・ダウンロードだけで良いです。
  動作しなかったので、あまり検証してません。
  次の演習に進みましょう!

◆詳細情報
 ・ログレベル
  https://studio.uipath.com/lang-ja/v2018.1/docs/logging-levels
  2018.01で公式サポートが終了されていると出ています。
 ・デバッグについて
  https://studio.uipath.com/docs/about-debugging
  こちらは2018.04からサポート内容でビデオの内容が詳細に記載。

◆演習 1
・[トライキャッチ (TryCatch)] の理解を目的
①入出金の差額を計算して(「入金」から「出金」を減算)、「差額」列の
 各行に結果を保存
②制御フローには、[トライキャッチ (TryCatch)] を使用
  「入金」の列の値、または「出金」の列の値が数値でない場合は、
 「差額」列に「データに誤りがあります」と記述
③添付されている Excel ファイル 「例外処理.xlsx」の
 「差額」列の各行に結果が反映されるかを確認
解答の確認
エラーが記録されました。

◆演習 2
・filesArray 変数内の前述のすべてのファイルのコンテンツを読み取り、
 consolidate.txt の名前の単一のファイルに統合します。
 (Read Text File アクティビティがエラーをスローするため) ファイルの読み取 りが実行されない場合、統合されたファイルにロボットがコンテンツを追加し ないようにする必要もあります。出力結果は、「レッスン 12 練習 2 – 統合」の ようになります。
・ワークフローは、さまざまなポイントで失敗します。ワークフローの構造を保  持しながら、最小限の変更を加えて、アプリケーションと論理エラーを修正し  てみてください。
感想
 実はあまり分からなかった。

◆要約
Ⅰ.概要
本モジュールでは、一般的にソフトウェア開発で最も重要といわれる 2 要素と、UiPath Studio に用意されているそれらの関連ツールについて説明しました。また、[Debug (デバック)] タブ、[Try Catch (トライキャッチ)] 、その他の便利な手法を紹介しました。

Ⅱ.学習した内容
・デバッグを開始するには、[Execute] タブの [Start Debug] ボタンを押します。
・デバッグ時は、以下の 3 つの事象が発生することがわかります。
 ①現在実行されているアクションが、黄色でハイライトされます。オプション  設定により、このアクションに影響を受けている要素がもしあれば、赤色で  ハイライトされます。
 ②ローカルパネルで、すべての変数の現在値を確認できます。
 ③ワークフローで実行されたすべてのアクションの詳細ログが取得されます。
・実行速度を遅くする必要がある場合は、[Slow Step] ボタンを使用します。
  あるいは、[Toggle Breakpoint] ボタンを使用して実行を完全に一時停止し、  [Step Over] ボタンを使用してステップバイステップで実行を再開することが  可能です。
・アプリケーションの読み込みを待機しているとき、アクティビティのデフォル  トのタイムアウト値は 30 秒です。この読み込みの待機を、 [Element Exists   (要素の有無を検知)] 、 [Find Element (要素を探す)] 、 [Wait Element
  Vanish (要素の消滅を待つ)] などのアクティビティや、画像に対応したこれら  と同等のアクティビティを使用して待機することも可能です。
・[Element Exists (要素の有無を検知)]はワークフローに影響を与えず、単に
 ブール値を返すだけです。一方で、他の 2 つのアクティビティは要素が見つか るか消えるまで実行を停止します。
・Try Catch (トライキャッチ)] では、エラーが発生する可能性のあるアクショ ンを [Try] ブロック内に収容し、エラーが発生したときに実行するアクション を [Catch] ブロック内に収容する必要があります。さらに、オプションとして 前述した 2 ブロックの後で必ず実行するアクションを [Finally] ブロック内に 収容します。
・いろいろなタイプの例外に対応するため、[Catch] を複数持つことが可能
・例外を検出したとしても、ワークフローを確実に停止させたい場合があります その場合は、 [Rethrow (再スロー)] が使用可能です。
・自動化の個々のコンポーネントを分離して別のワークフローファイルにするこ とで、そのファイルを [Invoke Workflow (ワークフロー呼び出し)] を使用し て呼び出すことが可能になります。

Ⅲ.ベストプラクティス
・アクションやフローチャートに対して適切な名前を使用することは非常に重要 です。長期的にはメリットが大きくなります。
・使用したいウィンドウの上に別のウィンドウが存在すると、そのウィンドウ によって問題が引き起こされる可能性があります。その問題を回避したい場合 適切な回避策はデフォルトの入力メソッドを使用しないことです。
・セレクターに問題がある場合、[Indicate On Screen] オプションと [Attach to
  live element] オプションを使用してセレクターを「リフレッシュ」しましょ う。

◆小テスト
 100点でした。
単一選択
  1)
UI要素が画面に表示されるまで待機する必要がある場合は、どのアクティビティを使用すべきですか?
○ 要素を探す
✖ 要素が存在する
✖ 待機要素が消える

単一選択
2)
UI要素が画面に表示されているかどうかを確認する必要がある場合は、どのアクティビティを使用すべきですか?

✖ 待機要素が消える
✖ 要素を探す
○ 要素が存在する

単一選択
3)
Try/catchアクティビティの Finally ブロックは、次の場合に実行されます。

✖ Try ブロックのアクティビティは、エラーなしで実行された場合
✖ Catch ブロックのアクティビティが実行され、エラーが発生した場合
○ 例外が発生したかどうかにかかわらず、毎回
✖ Try ブロックのアクティビティが実行され、エラーが発生した場合

複数の選択肢
4)
特定のアクティビティの前に実行を一時停止するには、どうすればよいですか?(該当するものをすべて選択してください)

○ デバッグモードでブレークポイントを使用する
○ MessageBoxアクティビティを使用する
✖ Pauseアクティビティを使用する
✖ Breakアクティビティを使用する

単一選択
5)
Catchブロックで定義されている例外タイプが複数ある場合、どのブロックが実行されますか?(該当するものをすべて選択してください)

✖ 一致しているすべてのブロックが定義されている順に実行される
✖ 最も一般的な例外タイプに一致しているブロック
○ 特定の例外タイプに一致しているブロック
✖ 定義されている最初のブロック

レッスン11– メールの自動化

◆メールの自動化の概要
 ・メール専用のアクティビティの使用方法
 ・メッセージの送受信方法
 ・メールをフィルタリングし、添付ファイルをダウンロードする方法
 ・メッセージテンプレートの使用方法

◆Video-メールの自動化(受信)
 ・メール受信のアクティビティは4つ
   ①POP3メールメッセージを取得(GetPOP3MailMessages)
   ②IMAPメールメッセージを取得(GetIMAPMailMessages)
   ③Exchangeメールメッセージを取得(GetExchangeMailMessages)
   ④Outlookメールメッセージを取得(GetOutlookMailMessages)
 ・Outlookで勉強
  件名と添付ファイルのあるメールを処理

◆Video-メールの自動化(受信 – 応用)
 ・受信メールから未読メッセージの取得
 ・受信日時を取得
  「Mail.Headers(“Date”)」を利用。
  また、outlookにはフィルター機能があるので、便利

◆Video-メールの自動化(送信)
 ・メール送信のアクティビティは3つ
   ①SMTPメールメッセージを送信(SendMail)
   ②Exchangeメールメッセージを送信(SendExchangeMail)
   ③Outlookメールメッセージを送信(SendOutlookMail)
 ・Outlookで勉強
   ①プレースホルダー
    テンプレートにプレースホルダを設定すると、
    String.Formatメソッドを活用して、動的関数を取り込める。
   ②スクリーンショット
    プロセス実行時のエラーを撮影し、添付ファイルとして送信する方法

◆演習1
 ・受信箱内のメールをルールに基づいて、フォルダーに移動させる
   ワークフローの作成
  解答とフローチャートから確認しただけです。

◆演習2
 ・次の操作を実行するワークフローを作成しましょう
  ①「請求書(20201001_UiPath株式会社).pdf」(添付ファイル内)の
    2ページ目を読み取る
  ②「納品書(202009_UiPath株式会社).pdf」(添付ファイル内)の
    全ページを読み取る
  ③2つのPDFより、一部テキストを抽出し、メール本文に入力後、
   経理部宛に支払処理を依頼するメールを送信する
  解答に自分のアドレスを設定すると、送信できました。

◆要約
①概要
本レッスンでは、非常に重要なテーマであるメールについて扱いました。メールを必要とするプロセスは数多く存在しており、メールをこれらのプロセスのトリガーや仕上げに使うことが一般的です。メールの送受信や添付ファイルの操作について学習し、さらにメッセージテンプレートの操作についても学習しました。
②学習した内容
・使用するプロトコルに応じて、多くのメール関連アクティビティがあります。プロトコルには、SMTP、POP3、IMAP、Exchange、Outlook があります。
・メール取得関連のアクティビティでは、主に以下の機能が共通で用意されています。
 - 特定のメールボックスフォルダーからメールを取得します。(Outlook、IMAP、Exchange)
 - 未読メッセージのみ取得し、既読としてマークします。(Outlook、IMAP、Exchange)
 - メールの受信数に制限を設定します。
・MailMessage オブジェクトはタイムスタンプ情報を直接提供しないため、Headers dictionary から「Date」値にアクセスする必要があります。
・Outlook アクティビティには、Subject や ReceivedTime などの条件に基づいて受信メッセージをフィルターする機能が用意されています。
・ファイルからメールのテンプレートを読み込む場合、文字列フォーマットを使用して、プレースホルダーに動的データを格納できます。
③ベストプラクティス
・Outlook アクティビティと Exchange アクティビティは、接続パラメーターを必要としないため、使いやすくなっています。
・Outlook が設定されていれば、一般的にそれが最良の選択です。その理由は、追加機能が用意されており、あらゆるメールプロトコルと互換性があるにもかかわらず、必要な設定量が最も少ないからです。

◆小テスト
 80点でした。
1)
フィルタリング済みのMailMessage変数のみを取得したい場合に使用するアクティビティを答えてください。
✖ POP3メールメッセージを取得する
✖ Exchangeメールメッセージを取得する
✖ IMAPメールメッセージを取得する
○ Outlookメールメッセージを取得する

単一選択
2)
すべての Get Mail アクティビティ(POP3、IMAP、Outlook、Exchange)の Output プロパティフィールドでサポートされている変数の型はどれですか?(該当するものをすべて選択してください)

○ リスト(MailMessage)
✖ MailMessage
✖ リスト(ジェネリック)
✖ ジェネリック

複数の選択肢
3)
メールメッセージの送信に使用できるアクティビティを答えてください。

✖ IMAPメールメッセージを送信します。
○ SMTPメールメッセージを送信します。
○ Outlookメールメッセージを送信します。

複数の選択肢
4)
未読のメッセージだけを取得するためのアクティビティは、次のうちどれですか?(該当するものをすべて選択してください)

○? IMAPメールメッセージを取得する
×? メールメッセージを保存
○? POP3メールメッセージを取得する
○ Outlookメールメッセージを取得する

単一選択
5)
メールの日付を取得するには、MailMessageクラス内でどの Visual Basic プロパティを使用すればよいですか?(該当するものをすべて選択してください)

✖ 日付
✖ 日付は取得できない
✖ 添付ファイル
○ ヘッダ(“日付”)

レッスン 10 – PDF

この章は、PDFに特に興味がなければ、PDFからデータを取得できるということを理解し、掘り下げずに学んで次に進んで良いと思います。

◆PDF自動化の概要
 ・Read PDF アクティビティの使用方法
 ・Read PDF with OCR アクティビティの使用方法
 ・アンカーを使用して、PDF 内のフィールドからデータを取得する方法

◆Video-PDFの自動化(ドキュメント全体の抽出方法)
・PDF用パッケージの取込み
   私の環境もPDF用パッケージがインストールしてありませんでした。
 ・PDFファイルの情報は2種類
   ①テキスト化されたもの
   ②画像として取込まれたもの
   UiPathは②もOCR機能でテキスト化できるが、
   精度の問題から定型業務を勧めていない。
 ・テキストの抽出方法
   ①全体からの取込み
   ②特定の部分からの取込み
 ・取込み方法は3種類
   ①PDFのテキストを読み込み(ReadPDFText)
   ②OCRでPDFを読み込み(ReadPDFWithOCR)
   ③画面スクレイピング
    画面スクレイピングはアクティビティではなく、
    リボンから設定するので便利。
 ・ファイル全体からのテキスト取込みを説明

◆Video-PDFの自動化(特定の要素の抽出方法)
 ・「文字情報の取込み」を例に説明
 ・アクティビティ「テキストを取得(GetFullText)」
  セレクターをカスタマイズすることで、
  違うファイルから情報を取得できる。
  業務の定型化のヒントを得られる。
  
◆Video-PDFの自動化(アンカーベース – Anchor Base)
 ・業務を定型化するために有効なアンカーベースの
  使い方を学ぶ
 ・便利方法の紹介
  ①相対要素を探す(FindRelative)
  ②相対位置でスクレイピング(ScrapeRelative)

◆ワークフロー
・ダウンロードだけで良いです。
  無効なアクティビティと表示され、動作しません。
  次の演習に進みましょう!

◆演習 1
 ・アンカーベースでのテキストの取込みを学びます。
  今までのことを理解していれば、
  「うん」そうだね。という程度の感想でした。

◆要約
①概要
・本レッスンでは、PDF ドキュメントのタイプと、それらのファイルからデータを抽出する方法について学習しました。また、不安定なセレクターを解決する方法として、アンカーについても学習しました。
②学習した内容
・PDF アクティビティは、2 つのカテゴリに分類できます。大きなテキストのブロックまたはドキュメント全体を処理する場合と、特定のテキスト要素にフォーカスする場合です。
・PDF からデータを抽出する場合は、使用するファイルに応じて、次の 2 つのアクティビティから 1 つを選択する必要があります。[Read PDF Text( PDF のテキストを読み込み)] と [Read PDF With OCR( OCR で PDF を読み込み)] です。
・どちらのアクティビティもバックグラウンドで実行できます。
・テキストのブロックを取得する別の方法として、[Screen Scraping(画面スクレイピング)] ツールがあります。
・PDF ファイルから特定の値を抽出する場合は、[Anchor Base(アンカーベース)] を使用することも可能です。
③ベストプラクティス
・OCR はエラーが発生しやすいので、可能であれば [Read PDF With OCR( OCR で PDF を読み込み)] の代わりに [Read PDF Text( PDF のテキストを読み込み)] を使用しましょう。
・[Anchor Base(アンカーベース)] メソッドは、ファイル内の大きな構造変更に対応可能であるため、他のものよりも信頼性を高めることが可能です。

◆小テスト
 80点でした。
1)
PDFファイルの場所を指定するには、どうすればよいですか?(該当するものをすべて選択してください)
○ PDFへの完全パスとして指定する
✖ ワークフローへのパスとして指定する
○ 相対パスとして指定する

単一選択
2)
PDFコンテナーに画像とテキストの両方が含まれている場合、すべてのテキストを読み取るには、どのアクティビティを使用する必要がありますか?

✖ テキストを入手
✖ 画像を読む
○ OCRでPDFを読む
✖ PDFテキストを読む

単一選択
3)
PDFアクティビティがアクティビティパネルに表示されていない場合は、どのように取得できますか?

○ パッケージの管理 機能を使用してインストールする。
✖ 出力パネルに移動する。
✖ ライブラリ タブで検索する。

複数の選択肢
4)
Read PDF with OCR アクティビティについて、正しい説明は次のうちどれですか?(該当するものをすべて選択してください)

×? オプションなし
○ 異なるOCRエンジン(Microsoft、Google)を使用できる
○? 読み上げるページの範囲を指定できる
○ PDFファイルと連動する

複数の選択肢
5)
Read PDF with OCR アクティビティでエラーがスローされるのは、次のどの条件が指定されていない場合ですか?

✖ Password プロパティ.
○ FileName プロパティ.
○ 使われるOCRエンジン
✖ Text プロパティ.