23
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Microsoft Flow でExcel帳票を出力・・・めっちゃ苦労したからみんなに共有 その2(Do Untilの使い方もあるよ!)

Posted at

前回のおさらい

カスタムリストのデータを使ってレコード単位でExcel帳票を作ってほしいとの要望を受け
試行錯誤の末、Excelファイルを生成することはできたが
中身にデータが入ってないという状況に陥ってしまったのであーる

失敗してるんじゃないの?

いいえ、そんなことはないです
image.png

フロー結果ではうまくいってるんですよねこれが。
行の挿入の出力結果も特に問題なかったのですよ
image.png

試行錯誤してみた結果わかったこと

どうもExcelコネクタの"Add a row into a table"アクションの動作は
非同期っぽく、処理が終了した時点でまだデータが反映されていないっぽい。
にも拘わらず、コピーして、Delete a rowで行を消してるもんだから
結果的に何も反映されていないってことが判明。

さあて、どうする?

待ち時間を設定!

最小値が5秒なので、5秒も待てばうまくいくやろ!
→5秒以上かかる場合あり。(15秒経っても反映されない場合もあったりする)

Do Until条件で、反映されるのを確認する

というわけで、Do Until条件を設定してみたよ!
image.png

流れとしては

  1. Add a row into a tableを実施したテーブルを取得
  2. 確認チェック用の変数を宣言して、キー項目の内容を代入
  3. Do Until条件を設定して、変数の中のデータが抽出元のカスタムリストデータと同一になればループを抜けるように設定
  4. 条件に合致しない場合は、一旦待ち時間5秒を置いて、再度テーブルを取得し、変数に反映
  5. 条件に合致した場合はファイルコピーという形で後続処理を実行する

という感じです。

結果

うまくいきました!

まとめ

・Excelコネクタを帳票出力などで使用する時は、テンプレートファイルを使用してデータ反映後コピーする
・コネクタによっては非同期なものがあるため、Do Untilなどを使用して結果反映されているか確認する必要がある
・コネクタによっては日本語など2バイト文字で宣言されたレコードやカラムを認識しない場合がある
・変数を宣言するのはすべての条件分岐の前にやる必要がある
 →これ改善してくれないかなぁ・・・
・Try and Errorはコーディングレスでも大事 ←これ一番重要!

23
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?