【質問】
ワークフローの共通変数にファイルのパスを指定して、タスクに受け渡す処理を行っています。
対象のファイルはデスクトップ上にあるため、ワークフロー変数%USERPROFILE%の値をユーザープロファイルパスとして指定しています。(%USERPROFILE%\Desktop\エクセル.xlsx)
しかしそれでタスク実行すると、「アクセスが拒否されました」というエラーメッセージが表示され、ファイルのオープンに失敗します。
ワークフロー変数%USERPROFILE%内の値を確認してみると、想定していた値と異なっていました。
どのように設定すれば正しいのでしょうか。
【回答】
ワークフロー変数%USERPROFILE%を指定し、値を受け渡した場合、タスク実行先環境のユーザープロファイルではなく、Automateサーバーのサービスユーザーのユーザープロファイルが渡されます。
例)
1. ワークフロー変数として%USERPROFILE%の値を受け渡した場合
サーバー側のローカルシステムアカウント
<C:\Windows\system32\config\systemprofile>
が取得されます。
2. タスク内で%USERPROFILE%を指定した場合
タスク実行先環境のユーザーアカウント
<C:\Users\ユーザー名>
が取得されます。
そのため、可能であればユーザープロファイル配下以外にファイルを作成するよう手続きを変更する方が確実ではありますが、もしデスクトップ上のファイルを指定する場合は以下のようにワークフロー変数を修正してください。
(1)ワークフロー変数から%USERPROFILE%を除去
(2)新規でワークフロー変数を作成(仮にvar_FilePathとする)し、値を「Desktop\エクセル.xls」とする
(3)ワークフロー変数を受け渡す先のタスク内で「%USERPROFILE%\%var_FilePath%」と設定してファイルパスを指定する