はじめに
この投稿は、RPAツールの「UiPath Studio」での「ちょっとしたナレッジ」について、個人的にまとめたものです。
UiPath Advent カレンダーの 11 日目 の記事でもあります。
ファイル名・フォルダ名・シート名で使用できない文字
「Windowsフォルダ名/ファイル名/Excelシート名」には「使用できない文字」がありますが、RPA/UiPathで自動化する際に、処理の都合上で、その文字が邪魔になることがあります。
例)WEBブラウザ上に表示されている名前と同じファイル名で保存したい時
「Windowsフォルダ名/ファイル名/Excelシート名」で使用できない文字は以下になります。
ファイルやフォルダー名に使用できない文字(半角)
\ 円マーク、円記号
/ スラッシュ
: コロン
* アスタリスク
? クエスチョンマーク、疑問符
" ダブルクォーテーション ※ Excelシート名なら使用可能
<> 不等号 ※ Excelシート名なら使用可能
| 縦棒 ※ Excelシート名なら使用可能
シート名に使用できない文字(半角)
\ 円マーク、円記号
/ スラッシュ
: コロン
* アスタリスク
? クエスチョンマーク、疑問符
[] 角括弧 ※ ファイルやフォルダー名では使用可能
使用できない文字を指定すると、以下のようなエラーになります。
種類 | 名称エラー画面 |
---|---|
ファイル・フォルダ名 | |
シート名 |
使用できない文字を置換する
使用できない文字は「除去する or 置き換える」事になりますが、「代入アクティビティ」と「.Netのlinqメソッド構文」で置き換えるのが一番楽です。
「フォルダ・ファイル名」で使用できない文字は、Path.GetInvalidFileNameChars()
で配列で取得できます。「エクセルシート名」で使用できない文字は、自分で定義して配列型にします。具体的には"\/*?:[]".ToCharArray()
で取得できます。
この「使用できない文字列配列」を使って、元の文字列を1文字づつ移動しながら「使用できない文字列配列に含まれている文字なら置き換え」をしていきます。
例)複数代入アクティビティで、ファイルフォルダ名に使用できない文字を「_」に置換
<式エディタにセットしている値>
String.Concat(ファイル名にしたい文字列.Select(Function(c) If(Path.GetInvalidFileNameChars().Contains(c), "_", c)))
例)複数代入アクティビティで、エクセルシート名使用できない文字を「_」に置換
<式エディタにセットしている値>
String.Concat(ファイル名にしたい文字列.Select(Function(c) If("\/*?:[]".ToCharArray().Contains(c), "_", c)))
上記の式、少し分かりにくいですが
1)ファイル名にしたい文字を「.Select」で1文字づつチェックして
2)「.Contains」で判定して使用できない文字があったら「_」にする
3)「.Contains」で判定して使用できない文字に無かったら、そのまま使う
4)上記の結果が配列型になっているので「String.Concat」で文字列結合する
という処理をしています。
終わりに
以上、ちょっとしたナレッジでした。
この記事が参考になったら、 いいね をお願いします。閲覧ありがとうございました。