【UiPath】逆引き
フォルダ内のファイル一覧取得
アクティビティ無し。System.IO.Directory.GetFiles
を使う。
参考:Directory.GetFiles メソッド (System.IO) | Microsoft Docs
System.IO.Directory.GetFiles("C:\test")
' フィルタ指定。*と?が使用できる
System.IO.Directory.GetFiles("C:\test", "*.xlsx")
' サブフォルダを含めるかどうかの指定
System.IO.Directory.GetFiles("C:\test", "*.xlsx", System.IO.SearchOption.AllDirectories)
パスワード付きzipファイルの解凍
.NET、UiPathに用意されている機能では扱えないので、ほかのツール(7zip)を使う。
PCに7zipをインストールする。
(コマンドラインが使用できて、パスワード付きの解凍ができるツールであればなんでも良い)
コマンド実行して解凍する。実行方法は後述の「コマンドを実行して終了を待つ」参照。
↓ C:\test\test.zip
をパスワード123456
を使ってC:\test
へ解凍する例。
"C:\Program Files\7-Zip\7z.exe" x C:\test\test.zip -oC:\test -p123456
コマンドを実行して終了を待つ
「プロセスの開始」(StartProcess)は非同期なので、コマンド実行中でも後続のフローがさっさと進んでしまう。
代わりに「PowerShellを呼び出し」を使い、PowerShell内でStart-Process -Wait
を使う。
参考:UIPathでPowerShellを実行する方法 - Qiita
まず実行するps1ファイルを用意して、プロジェクトフォルダ内に保存する。
Param(
[string]$zipPath
,[string]$destDir
,[string]$password
)
$exePath = "`"C:\Program Files\7-Zip\7z.exe`""
$args = @("x", "`"${zipPath}`"", "-o`"${destDir}`"", "-p${password}")
Start-Process -FilePath $exePath -ArgumentList $args -Wait
UiPath側でps1ファイルを読み込み、「PowerShellを呼び出し」で実行する。
「PowerShellを呼び出し」アクティビティのプロパティのうち、「スクリプト入力」にチェックを入れ、スクリプトに渡すパラメータは「パラメーター」に指定する。
DataTable の DataType を変更する
現象
「CSVを読み込み(ReadCsvFile)」で読み込んだ DataTable は、列の DataType が全て String 型になる。
Excel の「範囲を読み込み(ExcelReadRange)」で読み込んだ DataTable は、列の DataType が全て Object 型になる。
同じ名前の列名が両者に存在し、DataTypeが異なる場合、「データテーブルをマージ」で合体させようとしても、DataType の不一致でエラーになる。
↓エラーメッセージ
データ テーブルをマージ: .列名 と .列名 は競合するプロパティがあります : DataType プロパティの不一致
DataType を揃えれば良いのだが、データがある DataTable に対して DataType の変更はできない。
解決策1
UiPath Connect で公開されているコンポーネントを利用する。
Datatable - Change Column Datatype - RPA コンポーネント | UiPath Connect
解決策2
元の DataTable のスキーマを元に新しい DataTable を作成し、DataType を変更してから元データをインポートする。
…という処理を「コードを呼び出し」に実装する。
out_table = in_table.Clone()
For Each column As DataColumn In out_table.Columns
column.DataType = GetType(Object)
Next
For Each row As DataRow In in_table.Rows
out_table.ImportRow(row)
Next
↓引数の設定
名前 | 方向 | 型 | 値 |
---|---|---|---|
in_table | 入力 | DataTable | DataTable型の変数を指定 |
out_table | 出力 | DataTable | 上記と同じ変数を指定 |
Json を扱う
Author And Source
この問題について(【UiPath】逆引き), 我々は、より多くの情報をここで見つけました https://qiita.com/vicugna-pacos/items/fd3c292565a413ea5a80著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .