Power AutomateのExcelアクションを使用してExcelファイルを更新した際、フローの作り方によっては実際のExcelファイルに更新がかかるまでにタイムラグが発生することがある。
今回はそんなタイムラグが発生したときの対処法について検討した結果をメモ。
現象:Power AutomateからExcelを更新するとタイムラグが発生することがある
SPOやOne Drive上のExcelに対してPower Automateから更新をかける際、処理の量が少し多くなるとExcelの更新にタイムラグが発生することがある。
例えば、今回事象が発生したフローはこんな感じ。
- SPO上にあるテンプレートExcelを複製
- 複製したExcelに対して更新をかける
- 更新をかけたExcelをメールで送信
こんな感じの単純なExcelのテンプレートをSPO上に保存して、
このテンプレートExcelをまずは複製、
複製したExcelに対して更新をかける(今回は単純に行を20個追加するだけ)。
そして更新したExcelのファイルコンテンツを取得して、メールで送信。
※このあと不要なファイルを残さないよう更新したExcelは消さなきゃだと思うけど、今回は省略
※このあと不要なファイルを残さないよう更新したExcelは消さなきゃだと思うけど、今回は省略
このフローを実行すると正常に動くんだけど、
送られてきたExcelの中身はなぜか空。。。
※もちろん更新をかけたほうのExcelには行が追加されている。
こんな感じでどのアクションが原因かはわからないけど、Excelのファイルコンテンツの取得にExcelの更新アクションの結果が追い付かないときがある。
対処方法:更新されるタイミングまで待つしかない
色々対処方法を探してみたけど、結論こんな感じでExcelの中身が更新されるまで待つしかないのかなと。。
Waitの中身はこんな感じで、「ファイルのプロパティ取得」から取得した更新時間をticks関数で整数に直してあげて、その比較で更新されたかを見ているだけ。
※ticks関数の中身は今回はこんな感じ。
※ticks関数の中身は今回はこんな感じ。
ticks(outputs('ファイルのプロパティの取得')?['body/Modified'])
実行してみると無事にファイルの更新を取得することができ、
※環境とかタイミングによって違うけど、30 ~ 40秒くらいで更新が走ることが多かった
※環境とかタイミングによって違うけど、30 ~ 40秒くらいで更新が走ることが多かった
メールで送ったExcelファイルのコンテンツも無事更新されている。
Excelファイルの更新が追い付かないってことはそんなに起きないんだけど、起きたときはひとまずこの方法で対応するしかないかな。。
※たまに即時更新されてしまい「Do Until」を抜けないこともあるので、環境ごとに遅くとも〇〇分以内には更新されているはず、という値をDo Untilの回数制限に入れてあげる必要あり
コメント