Skip to content

Latest commit

 

History

History
179 lines (122 loc) · 6.52 KB

File metadata and controls

179 lines (122 loc) · 6.52 KB

このライブラリは、UiPath向けのカスタムアクティビティです。

UiPathをやっていると、今いるディレクトリ名を取得したり、ファイルをBase64 Encodeしたりなど、.NETのメソッドを呼びたいことがちょくちょくあるのですが、それらを呼び出すアクティビティになっています。

具体的には以下の機能を提供します。

Path Utils

Combine アクティビティ

image.png

指定されたパスの配列を連結して、パスを生成します。いわゆる

{"c:¥temp","hogehoge"} → c:¥temp¥hogehoge
{"temp","hogehoge"} → temp\hogehoge
{"te/mp","hoge\hoge"} → te\mp\hoge\hoge

のような処理です。ふつうに文字列連結をすると c:¥temphogehogeなどになりますが .NETの System.IO.Path.Combine を呼び出して処理しています。ついでに、スラッシュ(/)もディレクトリの区切りとして処理したかったので、String.Replace("/", "\\") も入れてます。

Current Dir アクティビティ

image.png

現在のディレクトリのフルパスを返すアクティビティです。ただただ Directory.GetCurrentDirectoryをしているだけ。

Path Utils アクティビティ

image.png

相対パス・絶対パスを指定して、以下を取得するアクティビティです。

項目名 内容
DirectoryPath 原則 Path.GetDirectoryName() とおなじものを返します※
DirExists 指定したディレクトリが存在すればTrue(ファイルだったら存在してもFalse)
FileExists 指定したファイルが存在すればTrue(ディレクトリだったら存在してもFalse)
FullPath フルパスが返ります

※ 基本、Path.GetDirectoryName() とおなじものを返しますが、存在するディレクトリを指定したときは末尾に"¥"がなくても、そのディレクトリパスを返します。 Path.GetDirectoryName()は末尾が"¥"で終わってないと、その上のディレクトリパスを返してしまうようですが。

例:

Path: c:/temp/existsDir/
→
FullPath: c:\temp\existsDir\
DirectoryPath: c:\temp\existsDir


Path: c:/temp/existsDir
→
FullPath: c:\temp\existsDir
DirectoryPath: c:\temp\existsDir  ←.NETのメソッドは、c:\temp\ を返しますが、。


Path: c:/temp/notExistsDir/
→
FullPath: c:\temp\notExistsDir\
DirectoryPath: c:\temp\notExistsDir


Path: c:/temp/notExistsDir
→
FullPath: c:\temp\notExistsDir
DirectoryPath: c:\temp


Path: c:/temp/existsOrNotExistsFile.txt
→
FullPath: c:\temp\existsOrNotExistsFile.txt
DirectoryPath: c:\temp

String Utils

Base64 Encode アクティビティ

image.png

文字列をUTF-8とみなしBase64 Encodeします。

処理的には

 var result = Convert.ToBase64String(Encoding.GetEncoding("UTF-8").GetBytes(text));

です。

Base64 Decode アクティビティ

image.png

Base64 Encodeされた文字列をDecodeし、UTF-8で文字列にします。

処理的には

var resut = Encoding.GetEncoding("UTF-8").GetString(Convert.FromBase64String(text));

です。

Base64 Encode From File アクティビティ

image.png

ファイルをバイナリで読取り、Base64 Encodeします。

処理的には

var path = context.GetValue(this.Path);
var bytes = ReadFile(path);
var result = Convert.ToBase64String(bytes);

public byte[] ReadFile(string filePath)
{
    using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        var buffer = new byte[fs.Length];
        fs.Read(buffer, 0, buffer.Length);
        return buffer;
    }
}

こんな感じ。

Convert CRLF アクティビティ

image.png

与えられたテキストの改行コードを変換します。入力されたデータの改行コードが CR/LF/CR+LF どれであるかに関わらず「セットする改行コード」にチェックを入れた改行コードで出力します。処理的には、いったん CR/CR+LF → LF へ変換し、そのあとLFを指定された改行コードに変換しています。

 // まず、LFだけにしてしまう
 trimData = trimData.Replace("\r\n", "\n");
 trimData = trimData.Replace("\r", "\n");

 if (CR) {
     trimData = trimData.Replace("\n", "\r\n");
 } else {
     // CRはすでに除去済みなのでなにもしない
 }

 if (LF) {
     // LFはすでに付与済みなのでなにもしない
 } else {
     trimData = trimData.Replace("\n", "");
 }

こんな感じ。

To JSON String アクティビティ

任意のオブジェクトをJSON文字列化するアクティビティです。 image.png

例としてはDictionaryオブジェクトを生成して渡してみると、Key/ValueがJSON文字列として出力されています。 image.png

処理的には

String jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(obj, Formatting.Indented);

です。