パブリッシュ後のExcelテンプレート配置場所について

プロジェクト内でテンプレートとなるExcelをコピーし別名に書き換えたあと、
加工したデータを書き込んでExcel出力する
という処理を行っています。

デバッグでは問題なくExcel出力されるのですが、
パブリッシュした後にnupkgをバッチで叩いて起動させると
テンプレート先のパスが読み取れないというエラーで処理が途中で止まってしまいます。

テンプレートのコピーはプロパティ「UiPath.Core.Activities.CopyFile」を使っています。
その際、コピー先・コピー元ともに絶対パスで指定しています。

▼コピー元(テンプレート保管元)
C:\Users\XXX\Documents\UiPath\Document\format.xlsx

▼エラー内容
プロジェクト名:test
Could not find a part of the path ‘C:\Users\XXX.nuget\packages\test\1.0.0\content\Document\format.xlsx’.

C:\Users\XXX\.nuget\packages\test\1.0.0\content 配下に
Documentフォルダを作成してテンプレートExcelを配置すれば処理は問題なく行われるのですが、
パブリッシュすると絶対パスで指定したはずのテンプレートの参照場所が変わってしまうのは何故でしょうか。

テンプレートは滅多に変更することは無いですし、
パブリッシュする度にpackagesのcontent内にテンプレートを置きなおすのは手間なので
フロー内で指定したパスのままにしておきたいです。

解決方法をご存知の方がいらっしゃいましたら、ご教示いただけますでしょうか。
何卒よろしくお願い致します。

■環境
非Orchestrator
Studio 2022.10.3
Microsoft Windows 10 Pro 64 ビット
6.0.7

1 Like

こんにちは

絶対パス指定になっていないのではと思います。ワークフローのスクリーンショットを共有可能でしょうか?また当該プロパティをエディタで開いたときどのようになっているか確認できますでしょうか?

こんにちは。
早速アドバイス頂きありがとうございます。

予めパスを変数に入れて、当該プロパティには変数で指定しているのですが
これが良くないのでしょうか。
フローとプロパティのキャプチャはこちらになります。

こんにちは

とりいそぎ、7のコピーアクティビティの手前で、ログ出力アクティビティを追加して、
両変数の中身を書き出してみてはと思います。(想定している中身になっているかの確認)

1 Like

7のコピーアクティビティの手前で変数の値をメッセージボックスを出すように変更して確認しましたが
絶対パスのままになっていて問題ありませんでした。

パス確認

もう少し確認してみます。

Hi @rpamina

Please use relative path or append with currentdirectory environment variable if you are placing the file in the UiPath code itself.

Else palce the files in a common location and use them

Cheers

1 Like

こちらの件、なんとか解決(?)しました。

パブリッシュする際のバージョンを上げず
常に上書きしていたことが原因だったかもしれません。

質問した問題が発生するより前に、
テンプレートファイルを相対パスで指定したままパブリッシュしていました。

その後、こちらの質問内容を参考に下記の点を修正。
・テンプレートファイルの場所をプロジェクト内から共通箇所へと変更
・相対パスから絶対パスの指定へ変更

パブリッシュする時は、バージョンを上げず毎回1.0.0として上書きする形で行っていました。

それでもうまく行かず、質問させて頂いた流れになります。

メッセージボックスを追加してパブリッシュしたあとメッセージが表示されなかった為
何かおかしいと思い、
C:\Users\XXX\.nuget\packages\test
配下の1.0.0を丸ごと消して再度パブリッシュしなおしたら
メッセージも表示され、Excelも無事出力されました。

バッチ側のnupkgバージョンを修正する手間を惜しんだのが良くありませんでした。
今後テスト版として修正内容を確認する際はプレリリースとしてバージョンを上げながら
確認するようにした方が良いですね。

2 Likes

バッチファイルのほうをnupkg指定をやめてID指定にするという手もありますね。こちらなら勝手に最新版が使われるはずなのでバージョンが変わるたびにバッチファイルを修正しなくてもよさそうです。

1 Like

こんにちは。
ID指定出来るのですね。
バッチのバージョンを手修正する手間が省けるのはとてもありがたいです。

今は下記のように記述したバッチをタスクスケジューラから起動しています。
call C:\Users\XXX\AppData\Local\Programs\UiPath\Studio\UiRobot.exe -file "C:\ProgramData\UiPath\Packages\test.1.0.0.nupkg"

パブリッシュした後、どこかでIDが振られているのでしょうか?
IDの指定方法についてご教示いただけますと幸いです。

1 Like

このあたりを見ると詳しく解説されています。
IDはパブリッシュしたときにアシスタントに表示される名前そのものでいいはずです。

1 Like

ありがとうございます。
教えて頂いたサイト、とても参考になりました。

プロセス名:test
call C:\Users\XXX\AppData\Local\Programs\UiPath\Studio\UiRobot.exe -p test

-file-p のプロセス指定にすることで問題なくバッチを起動できました。
これでバッチ側のバージョン管理をする手間が省けそうです。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.