DBから取得したデータに少し加工を加えExcelへ保存させるのですが、
Excel保存時に以下のエラーメッセージが頻繁に発生します。(エラーにならず正常終了することもあります)
The process cannot access the file because it is being used by another process
(別のプロセスによって使用されているため、プロセスはファイルにアクセスできません)
WorkFlowとしては下図程度の非常にシンプルなものです。
特徴としては、
・保存対象のExcelは既に存在するExcelファイルに対しての更新
・Excelの保存先はファイルサーバー上であり、処理遅延が起きやすい
・作成されるExcelファイルのサイズは4MB程度(それほど大きいとは思いませんが・・・)
という点があります。
英語のコミュニティなどに似たような事象はいくつかあがっており、
「完了までブロック」を入れてみたり、Excelファイルの設定でブックの共有をさせてみたりしましたが、どうも改善されません。
回避方法についてご助言頂ければ幸いです。
宜しくお願い致します。
@yuzo さん
共有フォルダ上のExcelファイルの書き換えは、たしかにあまり安定しない印象です。
(Sharepointだとさらにうまくいかないような話が出てきますが・・・)
直接共有フォルダ上のExcelファイルに書き込むのであれば、すでに今存在しているデータも使うということだと思いますが、一度それを全部Alteryx上に取り込み、Excelファイル自体を上書きしてはどうでしょうか?(追加書き込みやSheetの削除ではなく「ファイルを上書きする(Drop)」を使います)
それでも安定しなければ、一度ローカルに保存してからコマンドラインツールもしくはワークフロー実行後のイベントを使ってファイルをコピーするのが一番安定すると思います。
(この場合もファイルサーバーのExcelファイルを読み込んでローカル上でExcelファイルを再現する必要があるかと思います)
ありがとうございます。
既存Excelファイルを更新するのは、DBから取得したデータを貼り付けるシートと、そのデータをもとにPIVOTを仕込んだシートの2シートを用意してあるためです。
ただ、ファイルサーバ上の既存Excelファイルへの書き込みが不安定な以上、これらの仕組みは見直す必要があるかなと感じました。
とりいそぎExcelファイルの上書きで動作が安定するか確認してみます。
もう一つのローカルに保存してからファイルサーバへコピーする方法も確かにあると思いますが、
WorkFlowはAlteryxサーバ上で実行させているためその方法をとってよいものか・・・こちらは調整要といったところです。
@yuzo さん
なるほど、Serverで実行されていたのですね・・・。
一旦ローカルに保存して、という方法も基本的には動作するはずです(確か、出力ファイルもアセットとして登録しないとうまく動作しなかったと思います)。