【UiPath】フォルダごとコピーする
UiPathには「ファイルのコピー」アクティビティはあるんですけど
「フォルダのコピー」ってないんですよね。
業務的にはフォルダのコピーってしょっちゅう使うので大変困ります。
「繰り返し」アクティビティを使って、1つずつファイルをコピーしていく方法もありますが、時間がかかるしめんどくさいので、フォルダごとコピーできるアクティビティっぽいものを作ろうと思います。
アクティビティがないものはどーする?
UiPathはVB.VETまたはC#を使って実際にコードを書くことができます。
もともとノーコードでプログラムしましょう!というツールなのですが、ないモノはしょうがない!しぶしぶコード書きます。
そんなときはアクティビティ「コードを呼び出し」を使います。
そして「コードを編集」ボタンを押して、実際にコードを書きます。
僕はVB.NETの方がなじみ深いのでそっちを使います。
↓↓↓ 書くコードはこんな感じ
'ディレクトリ"D:\コピー元フォルダ"を"D:\コピー先フォルダ"にコピーする
My.Computer.FileSystem.CopyDirectory("D:\コピー元フォルダ", "D:\コピー先フォルダ", _
FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)
今回はフォルダのコピーのコードを紹介しましたが
このアクティビティを使えば、他にいろんなことできそうですね。
ただこのままだと、フォルダパスをハードコードしていることになるので
大変使いづらいし、変化に対応できないので危険です。
そこを解決しましょう。
引数を使う
以下の「引数を編集」ボタンをクリックします。
そんで、コピー元フォルダを表す変数(=FolderMoveBefore)と
コピー先を表す変数(=FolderMoveAfter)を作成します。
加えて、VB.NETのコードもこれらの変数を使えるように書き換えます。
My.Computer.FileSystem.CopyDirectory(FolderMoveBefore,FolderMoveAfter, _
FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)
あとはUiPath側で変数を作って、「コードを呼び出し」側に引数としてパスするだけです。
①変数を作る
②上で作った変数にフォルダパスを入れる
③作った変数と「コードを呼び出し」内の変数を対応させる
これで「コードを呼び出し」アクティビティに変数を受け渡すことができました。
さいごに
UiPathってホント使いやすいし、分かり易いんですけど
たま~に欲しいアクティビティがなかったりするんですよね。
今までVB.NETってヤダなあ。
ノーコードでやりたいのになあ。となかなかコードを書くことに抵抗がありましたが、やってみると意外と大したことなかったなあという印象でした。
きちんとドキュメントを残したり、使い方を残せば社内の他のメンバーも使えると思うので、今後は積極的にVB.NETを勉強しようと思います。