UiPathよくつかうアクティビティ、メソッドなど

自分用メモ、適宜更新します

#Input Dialogアクティビティ
入力ダイアログを表示し、入力された値を変数に格納する

| Input | 記載内容 |
|:--:|:--|
|Label|ダイアログの本文|
|Title|ダイアログの件名|
|Options|入力方法を直接入力以外にする場合、リストや配列形式の変数を格納する|
※Input Dialogアクティビティは空白のままOKを押すとエラーとなるが、×ボタンを押すとResultの変更がないまま次へ進む
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176879/ac4604e3-8b97-35e6-20ab-789aabed3e0e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176879/383c9584-2c26-0e54-4a63-1ff058a87016.png)


#Invoke Method（よくつかうものを抜粋）
###Import Row
DataTableよりFor Each Row等で抽出したDataRowを、異なるDataTableへ追加する

| 入力箇所 | 入力内容 |
|:-:|:--|
|MethodName|ImportRow|
|Parameters **(Direction)**|In|
|Parameters **(Type)**|System.Data.DataRow(デフォルトにないのでBrowser for typesで探す)|
|Parameters **(Value)**|追加したいDataRow|
|TargetObject|DataRowを追加するDataTable|
|TargetType|(null)|
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176879/234d96ba-005e-2c77-da84-8e7974ac3e71.png)


###SendWait
Send HotKeyアクティビティの互換版　アクティビティにはない **PrintScreenキー** も指定可能

| 入力箇所 | 入力内容 |
|:-:|:--|
|MethodName|SendWait|
|Parameters **(Direction)**|In|
|Parameters **(Type)**|String|
|Parameters **(Value)**|押下したいホットキーを表すSendKeyクラスのコード|
|TargetObject|入力不要|
|TargetType|System.Windows.Forms.SendKeys|
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176879/eb6ba349-1a92-eb5a-85e2-02f4ecfd1ca7.png)
使用できるコードについては、 [.NET](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.sendkeys?view=netframework-4.8,"SendKeys Class") のサイトを参照
なお、プリントスクリーンは **{PRTSC}**で指定可能
同時に押下するCtrl,Alt,Shiftの指定はそれぞれ以下の通り

| 押下したいキー | 入力コード |
|:-:|:-:|
|Shift|+|
|Alt|%|
|Ctrl|^|

###SetImage
Take Screenshotアクティビティで取得した画像(image変数)をクリップボードにセットする
取得した画像を保存せず、各種ドキュメント(Excel、Wordなど)に貼り付けたい場合はこのメソッドと
上記SendWaitの合わせ技で対応ができる

| 入力箇所 | 入力内容 |
|:-:|:--|
|MethodName|SetImage|
|Parameters **(Direction)**|In|
|Parameters **(Type)**|System.Drawing.Image|
|Parameters **(Value)**|Screenshot結果を格納したImage変数|
|TargetObject|入力不要|
|TargetType|System.Windows.Forms.Clipboard|
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176879/8ffc621f-e9c8-20db-6549-58dbf684b48e.png)

#Switchアクティビティ
複数条件の判断分岐(VBでいうSelect Case文)
Excpressionに判別を行いたい要素を指定し、分岐の値をCaseに指定する
(Add new caseをクリックすると表示される「Case Value」に入力)
要素がその値に合致する場合のみ行う処理をそのボックス内に作成していく
要素が空白の場合の分岐は、Case Valueに **(empty)**を指定する
注意点は、Caseの型(TypeArgument)を文字列にした場合、Case Valueに入れる値には **ダブルコーテーションを付けないこと**
Case Valueには正規表現が使用できないため、予め要素の値を加工しておく必要がある(要検証)
(ex:要素の値の後半部分に年月日が含まれる場合は、前半の値のみを抽出してExpressionに指定する…など）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176879/2bbc58f1-a0bc-6f15-c502-82bc854ff05f.png)


#Parallelアクティビティ
Parallel（並列）という名の細切れ直列処理
同様の処理を行う場合はセレクターの指定を明確にしないと意図しない結果が出力される場合があるので注意する
(通常ではA1⇒A2、B1⇒B2の順に行われる処理が、並列だとA1⇒B1⇒A2⇒B2の順になる可能性があり、A2で取得したい情報が
B1の処理で指定できなくなっている可能性がある)
[この方](https://qiita.com/UmegayaRollcake/items/28d7149ecdcdf17eb207 "【UiPath】ParallelでパラレルにPCを操作したい
") の記事がとても分かりやすい

#Excel操作関連アクティビティ
読み書きに関するアクティビティを抜粋して記載
Excelの操作に関するアクティビティは2種類あり、それぞれ以下の階層に存在している
１．Available > App Integration > Excel
２．Available > System > File > Workbook
それぞれ行う機能は大きく変わらないが、以下の通り違いがあるので操作する場合は注意する

|            | １の場合 | ２の場合 |
|:----------:|:-:|:-:|
|概要|Excelというアプリケーションに特化したアクティビティ群|表計算ソフトで操作できるファイルを編集するアクティビティ群|
|注意点|処理前に **Excel Application Scope**アクティビティで操作するファイルを指定する必要がある|処理時にExcelが起動しないためSendHotkeyなど、 **操作対象を指定して行う処理が実行できない**|
|書式設定の取得|〇(書式設定で表示した通貨単位の取得も可能)|×|
|データの読み込み|〇(Write Range,Write Cell)|〇(Write Range,Write Cell)|
|データの書き込み|〇(Read Range,Read Cell)|〇(Read Range,Read Cell)|
|指定セルの関数取得|〇(Read Cell Formula)|〇(Read Cell Formula)|
|シートのコピー|〇(Copy Sheet)|×(なし)|
|セルの色を変更|〇(Set Range Color)|×(なし)|
|セルの色を取得|〇(Get Cell Color)|×(なし)|

#Stringsクラスのメソッド
UiPath Acaddemyは [ここ](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.visualbasic.strings?view=netframework-4.8"Strings Class")見ろって言ってた（優しくない）