Category Archives: フォルダ操作

UiPathでユーザーに任意のフォルダ・ファイルを選択させる方法

UiPathでユーザーに任意のフォルダ・ファイルを選択させる方法 ※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。 UiPathを使ってユーザーに処理対象となるフォルダやファイルを選択させたい、 ということはよくあると思います。今回はそんなときに便利なアクティビティを紹介していきます。 ・ユーザーにフォルダを選択させたい時に使うアクティビティ そのまんまですが「フォルダーを選択」(Select Folder)アクティビティを使用します。 このアクティビティを使うと、ダイアログが表示され(Windows標準のエクスプローラのような形です)ユーザーにここでフォルダを任意に選択させることができます。 ユーザーが選んだフォルダのパスはプロパティの出力にある「選択されたフォルダー」で指定した変数に文字列として格納されます。 ・ユーザーにファイルを選択させたい時に使うアクティビティ こちらもそのまんまですが「ファイルを選択」(Select File)アクティビティを使用します。 このアクティビティを使うと、ダイアログが表示され(こちらもWindows標準のエクスプローラのような形です)ユーザーにここでファイルを任意に選択させることができます。 ユーザーが選んだファイルのパスはプロパティの出力にある「選択されたファイル」で指定した変数に文字列として格納されます。なお、特定のファイルだけ(例えば.xlsxや.pdf)を表示させたい場合は入力プロパティの「フィルター」に書かれている、(*.*)|*.*を(*.xlsx)|*.xlsxというように書き換えることで、エクスプローラに表示されるファイルの種類を限定できます。 なお、複数フィルタを掛けたい場合はカンマで区切ってください。例えばExcel関連なら(*.xls,*.xlsx,*.xlsm)|*.xls,*.xlsx,*.xlsmとなります。ちなみにこの情報は上の設定をエラーにしたときに出るんですけど、エラーじゃなくてわかる場所に書いて欲しいんですよね。 そういうとこだよ、UiPath。 (注意点) フォルダ・ファイルに共通して注意点があります。ユーザーは必ずしも思ったとおりに操作してくれるとは限りませんので、例えば「ダイアログを閉じる」なんてことは当たり前のように起こります。 選択せずにダイアログを閉じてしまうと「フォルダ・ファイルが選択されなかったエラー」が発生しますので、エラーハンドリングをしないとシナリオはそこで止まってしまいます。 また、ファイルの場合は間違った種類が選択されないようフィルタをかけたり、後でシナリオ内でのチェックを行うなどしてください。  

UiPathでフォルダのサイズを取得する方法

UiPathでフォルダのサイズを取得する方法 ※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。 UiPathには様々なアクティビティがありますが、意外と存在しないものもあります。 代表的なものは年月日系の取得、ファイルの名前を取得するなどですが、 これらは.netの方法がそのまま使えますので大して難しくありません。 しかし、フォルダのサイズに関しては1発で取る方法が見つからないと思います。 ここではUiPathでどうやってフォルダサイズを取得すればよいかを解説していきます。 1.フォルダのサイズそのものは取得できない いきなり核心です。なんとそんなものは存在しません。 では結局どうすればよいのでしょうか。答えは… フォルダの中にあるファイルのサイズを一つずつ調べて、全部足す です。嘘じゃないです。.netでは本当にこれしかないんです。 .netでファイルサイズを取得するにはnewだの何だのと、いったいそんなのどこから出てきたんですか、 という内容となり、ほぼほぼ.netの話になるのでここでは解説しません。 専門的なサイトのほうでしっかり解説されていますのでそちらをご覧ください。 .netなんて極力勉強したくない!じゃあ、どうすればいいか、 フォルダのプロパティを開いてそこからテキストを取得する です。これならいくらサブフォルダがあろうが隠しファイルがあろうが関係ありません。 これぞUiPathならでは、プログラム解らない人でも安心といった取り方です。 やりかたはただテキストを取得(Get Text)アクティビティでプロパティから取ってくるだけです。 プロパティウィンドウなのでループしなくても勝手にWindowsが計算してくれます。 ただ、この方法の弱点は見ての通り余計な情報が多いことです。 xxx KB(xxxx,xxxxバイト)のような感じで、例えばほしいのが()の中のバイトサイズだったら、 数字だけ加工して取ってくるのが面倒です。サイズによって文字数も変わりますし、 こんなのループして条件分岐なんてしてたらnewしたほうがよっぽどマシです。 そんなときは下記のように置換(replace)アクティビティと正規表現を使います。 上で.netがどうこういいながら正規表現というのも大概ですが¨ 言語に関係なく使えるので、いきなりnewよりはましでしょう。 まず1つ目の置換(replace)アクティビティのプロパティのパターンの部分に、 “.*\((.*) バイト\)”と入力し、置換の入力欄に”$1″と何も考えずに入れれば、括弧の中の数字だけ取得できます。 2つ目の置換で,(カンマ)を””に変換して、削除します。もしかしたら1回でもできるかもしれません。 なお、入力と結果には同じ変数を指定できます。 (※上記はWindows7や8の場合で確認しました) 正規表現を使うと死んでしまう人は、もっと別のやり方を考えましょう。 例えばコマンドプロンプトを立ち上げてCDコマンドを使って目的のフォルダまで移動し、 Dirコマンドを打ってもサイズは取得することができると思います。(もちろんテキスト成型は必要でしょうが¨) ダイレクトにサイズ、というのは取れませんが、UiPathはなんにでもアクセスできることを考えてみれば、 実は取る方法がたくさんあります。