PowerAutomate|Excelの更新後ファイルコピーしても反映されていない時の対処法

PowerAutomateでExcelの更新アクションをしたのちに
そのファイルに対して何かしらのアクション(ファイルを送信やコピーなど)を行う場合に、更新が反映されずに次の処理が走ってしまう場合があります。

この記事では、このような時にどう対処すれば良いのか。その原因と解決法を紹介いたします。

【事象の概要】先に行なっているExcelの更新が次の処理に反映されていない。

PowerAutomateで次の処理を行なっているとしましょう。

行の更新を行った後に、ファイルをコピーしています。

この場合、コピーしたファイルには行の更新が反映されていません。

「え。先に処理を行なっているはずなのになんで?」

と思うかも知れませんが、PowerAutomateで上記のような実装をするとコピーしたファイルには反映がされないのです。

あべべ

ファイルコピーではなく、同じファイルに対して変更などをする場合には問題ありませんよ!

【事象の原因】Excelの更新処理が完了する前にPAで次の処理が走っている。

では事象の原因です。

事象の原因は、「行の更新処理」が終わっていないけど、次の処理に入ってしまっていることが原因になります。

より詳しくいうと、Excelファイルの行の更新には、処理を開始して実際にExcelファイルが反映されるまでにはタイムラグがあり、その終了をPowerAutomateでは認識することができないのです。

これが原因で、ファイルコピーの処理が先に走ってしまい、コピーされてから実際に反映されるということが起こっています。

あべべ

初めてこの事象に出会うと「あれなんで!?」とビビりますね笑

【解決策1】待ち時間を設定する(根本解決策ではない)

では、簡単な方の解決策から紹介します。

それは、単純に「待ち時間」を設定することです。

待ち時間を設定することで、Excelファイルが更新されるのを待つことができ、通信の問題などが発生しなければ問題なく処理されます。

行の更新やCopyFileの実行時間は、1秒以下ですので、5秒ほど余裕を持っておけば問題ないでしょう。

待ち時間の設定方法

待ち時間は「遅延」と検索することで設定することができます。

スケジュールの遅延です。

あべべ

ただ、注意して欲しいのが、うまくいかない可能性もあるということです。

Excelが想定外の原因で更新が遅れてしまった場合に、待ち時間を超えてしまう場合が考えられます。

そうすると、この処理には穴があることになりますね。

【解決策2】更新時間からファイルが更新されたかどうかを判断する。

では、次の方法です。

今度は、対象のExcelファイルの更新時間から
ファイルが更新されているかどうかを判断し、更新された時に次の処理に行く という条件式を組むことにしましょう。

こうすることで、ファイル更新されたのちに、次の処理(ファイルコピーなど)を行うことができ、確実に反映させることができます。

処理の全体像

各要素の解説

スコープで囲う

まず最初の囲いですが、これはコントロールの「スコープ」を用いています。

ただ、こちらはなくても動作には関係ないので、わかりやすければ用いてください。

更新する前のExcelファイルのプロパティを取得

次に、Excelファイルの更新時間を取得します。

前回の更新する前と更新した後の「ファイル更新時間」を取得するためです。

あべべ

注意して欲しいのは、順番です。

ファイルのプロパティの取得は、Excelファイルの更新の前に実行してください。

Excelファイルを更新した後に取得してしまうと、更新時間が更新されてしまう可能性があります。

更新時間が上回るまで、ループ処理

ticks関数の中は、以下のように書いています。

1つ目のticks

ticks(outputs('ファイルのプロパティの取得_2')?['body/Modified'])

2つ目のticks

ticks(outputs('ファイルのプロパティの取得_3')?['body/Modified'])

ticks関数のなかに、Modified(更新時間)を入れます。
→ファイルのプロパティの取得で取得できていますよ!

変数updateFileTimeは、初めは初期値「0」にしています。

なので、1回目は必ず待ち時間が発生します。

その後、さらに「ファイルのプロパティの取得」を行い、
結果を変数に格納します。

再度条件式で、以前の更新時間と比較することで、更新しているかどうかを判断します。

これで、このフローの解説は終了です。

ループを抜ける時には、更新時間が更新されていることになります。

まとめ

今回は、Excelの更新を行っているのに、次の処理に反映されていない時の対処法について紹介しました。

ただ更新時間を回避するだけなのに、フローを多く挟んでますが、ご了承ください。

もし同じ事象にあって、苦しんでいる人がいれば参考にしてもらえると嬉しいです!

では、良いPowerAutomateライフを!

(Visited 867 times, 1 visits today)