RPAコンサルタントのプロコアラです。
UiPathでは、.NETのコードを使うことができます。
.NETってなんだよ。変数でも手一杯なのに。という方も大丈夫です。
よく使うものを、コピペで使えるようにまとめました。
文字列型なので、そのまま「メッセージボックス」「一行を書き込み」アクティビティにしようできます。
日付、時間の操作
日付や時間をファイル名に入れたい。特定の日時を超過している場合は、メッセージを追加するなど、色々な使い方ができます。
日付関連のやりたいことは全てDateTimeを使用することで実現できます。
今日の日付を取得する
DateTimeのNow関数を使用することで今日の日付を取得できます。
ToStringで文字列型に変換すれば、ログやファイル名に出力することが可能です。
DateTime.Now.ToString
→ 2019/11/17に実行時の出力例:11/17/2019 18:21:42
これだと海外使用のため、分かりにくいですよね。日本になじみのあるようにフォーマットを指定することができます。
DateTime.Now.ToString(“yyyy/MM/dd HH:mm:ss”)
→ 2019/11/17に実行時の出力例:2019/11/17 18:21:42
もっと分かりやすくしたい場合はこのようにすることもできます。
DateTime.Now.ToString(“yyyy年MM月dd日 HH時mm分ss秒”)
→ 2019/11/17に実行時の出力例:2019年11月17日 18時21分42秒
時刻の情報なんていらない人は、Dateを使うと時刻情報が削除されます。
DateTime.Now.Date.ToString
→ 2019/11/17に実行時の出力例:11/17/2019 00:00:00
Dateなんて使わなくても、この方法でも全く問題ないです。
DateTime.Now.ToString(“yyyy/MM/dd”)
→ 2019/11/17に実行時の出力例:2019/11/17
今日の日付の一部を取得する
一部の情報を取得したいこともありますよね。
何日か取得する
どちらも何日かという情報を取得します。
DateTime.Now.ToString(“dd”)
DateTime.Now.Day.ToString
→ 2019/11/17に実行時の出力例:17
何月か取得する
何月という情報だけが知りたい方はこちら
DateTime.Now.ToString(“MM”)
DateTime.Now.Month.ToString
→ 2019/11/17に実行時の出力例:11
月を格好よく英語で取得したいというあなたのためにこちらを捧げます。
こちらは覚える必要はないです。必要な時にコピペしてください。
DateTime.Now.ToString(“MMM”, System.Globalization.CultureInfo.CreateSpecificCulture(“en-US”))
→ 2019/11/17に実行時の出力例:Nov
DateTime.Now.ToString(“MMMMM”, System.Globalization.CultureInfo.CreateSpecificCulture(“en-US”))
→ 2019/11/17に実行時の出力例:November
何年か取得する
年だけを取得したい場合は、こちら
DateTime.Now.ToString(“yyyy”)
DateTime.Now.Year.ToString
→ 2019/11/17に実行時の出力例:2019
和暦で令和とか平成とかで取得したいんだけど、そんなことはできないですよね。
と、お悩みのあなたに捧げます。
こちらは、コードを呼び出し(Invoke code)アクティビティを使った方法で乗り切りましょう。
分からない人はプロコアラのGithubリポジトリを確認してください。
引数はこちらを参考に設定してください。
Invode codeの中身は次のように設定してください。
Dim format As System.Globalization.DateTimeFormatInfo = New System.Globalization.CultureInfo(“ja-JP”, True).DateTimeFormat
format.Calendar = New System.Globalization.JapaneseCalendar()
out_Year = in_Date.ToString(“ggyy年”, format)
何曜日か取得する
土日と祝日で処理を分ける場合もありますよね。そんな時に使用できます。
DateTime.Now.Tostring(“ddd”)
→ 日曜日に実行時の出力例:Sun
DateTime.Now.Tostring(“ddddd”)
DateTime.Now.DayOfWeek.Tostring
→ 日曜日に実行時の出力例:Sunday
日本語で曜日を出力したいなあという人はこちら
DateTime.Now.Tostring(“ddd”,New Globalization.CultureInfo(“ja-JP”))
→ 日曜日に実行時の出力例:日
DateTime.Now.Tostring(“ddddd”,New Globalization.CultureInfo(“ja-JP”))
→ 日曜日に実行時の出力例:日曜日
今日を基準にした日付を知りたい
今日から何日後、何か月前なども条件として使いますよね。
日指定
日数を調整したい場合はAddDays関数を使用します。
100日後が知りたい場合はこちら
DateTime.Now.AddDays(100).ToString
→ 2019/11/17に実行時の出力例:2020/02/25
月指定
3か月前が知りたい場合はこちら
過去の場合はマイナスをつけてください。日、年指定時も同様です。
DateTime.Now.AddMonths(-6).ToString(“yyyy/MM/dd”)
→ 2019/11/17に実行時の出力例:2019/05/17
年指定
DateTime.Now.AddYears(3).ToString(“yyyy/MM/dd”)
→ 2019/11/17に実行時の出力例:2022/11/17
特定日時の指定
今日じゃなくて、特定の日時を知りたい場合ってありますよね。
例えば、東京オリンピックの開催日(2020年7月24)が何曜日とか。
これには、DateTimeのParse関数を使用します。
Parse関数は文字列からDateTime型に戻すことができ、DateTime型の便利な関数が使えるようになります。
DateTime.Parse(“2020/7/24”)
こうすることによって、前述した全ての関数を書き換えれば、特定日時の情報も取得できます。
東京オリンピックの開催日(2020年7月24)は何曜日か?
DateTime.Parse(“2020/7/24”).DayOfWeek.Tostring
結果は、皆さんが実際に実行して確認してみてください。
日付の比較計算
日付の比較をしたい場合もDateTimeのTotalDaysで差分が何日あるか確認できます。
(DateTime.Now.Date – DateTime.Parse(“2020/7/24”)).TotalDays.ToString
→ 2019/11/17に実行時の出力例:-250
時系列でA→Bという順に並んでいた場合は、AからBを引くとマイナスになります。
つまり250日前ということです。
その他
その他、日付関連で使いそうな処理を載せておきます。
年間積算日
今日が1年で何日目か知りたい人、年間積算日というみたいですが、そんな人いるかな?笑
DateTime.Now.DayofYear.Tostring
→ 2019/11/17に実行時の出力例:321
月初
DateTime.Now.Tostring(“yyyy/MM/01”)
→ 2019/11/17に実行時の出力例:2019/11/01
先月末
Datetime.Parse(DateTime.Now.Tostring(“yyyy/MM/01”)).AddDays(-1).ToString(“yyyy/MM/dd”)
→ 2019/11/17に実行時の出力例:2019/10/31
ファイル関連
ファイル、ディレクトリ関連の操作には、system.IO.Directoryを利用します。
カレントディレクトリの取得
カレントディレクトリは、以下のようにして取得します。
CurrentDir = system.IO.Directory.GetCurrentDirectory
ディレクトリのファイル一覧を取得
ファイル一覧を取得したい場合はGetFilesを使用します。
Cドライブ直下のTempディレクトリのファイル一覧を取得したい場合は以下のようにします。
Files = system.IO.Directory.GetFiles(“C:\Temp”)
FilesはStringの配列(Array of String)で変数を追加しておきます。
For eachでも取り出せますし、Files(0)のようにして取り出すこともできます。
エクスプローラー上でShiftを押しながら右クリックすると「パスをコピー」が出てくるので、そのパスを使うと便利です。
文字列操作
文字列の結合
文字列の結合はよく使います。
以下のようにプラス(+)でつないでいきます。
ダブルクォーテーションは変数には不要です。変数の中で既にダブルクォーテーションが使われているため。
“文字列A” + hensuu + “文字列B”
改行を使う
改行をしたい場合は、Environment.NewLineを使用します。
データテーブル
データスクレイピングやExcelの読み込みでは、データテーブル型変数にデータが格納されます。
取得したデータにひと手間加える方法を解説します。
データテーブルをフィルタする
データテーブル型のExtractDataTableを例として解説します。
Select関数で条件を指定することでテーブルを抽出することができます。
ExtractDataTable.Select(“Assign=’Tanaka’ AND Status=’Completed'”)
以下のようなテーブルデータがExtractDataTableに入っていたとすると、No.2の列が抽出できます。
No. | Assign | Status |
1 | Tanaka | Open |
2 | Tanaka | Completed |
3 | Yamada | Completed |
Selectで抽出したデータはデータテーブルではなくてDataRowの配列です。
よって、処理を行いたい場合は、For each rowを使います。
抽出したデータをデータテーブルとしてに使いたい場合は次のように新しいデータテーブル型の変数に格納します。
newExtractDataTable = ExtractDataTable.Select(“Assign=’Tanaka’ AND Status=’Completed'”).CopyToDataTable
条件分岐
後日作成
UiPathのワークフロー
今回、実験的に作成したワークフローを公開しています。
実際にワークフローで実際に動くものから修正していくほうが、理解が深まります。
プロコアラのGithubリポジトリをご覧ください。
こちらのサイトも同様の情報を随時更新中みたいなので、参考にしてみてください。
https://qiita.com/UmegayaRollcake/items/2a4573b4fb664fa923a9
https://qiita.com/akira-f/items/e136dfd0700b1503e487
RPA、UiPathについて動画形式で学べるコアワカのUdemy講座を
いつでもお得な価格で受講できるクーポンを発行しています。
研修にも使用できる書籍もこちらから購入が可能です。
動画を受講したい場合はボタンをクリックしてください。
クーポンコードが適用されたUdemyコースのリンク一覧ページに移動します。