前回のおさらい
カスタムリストのデータを使ってレコード単位でExcel帳票を作ってほしいとの要望を受け
試行錯誤の末、Excelファイルを生成することはできたが
中身にデータが入ってないという状況に陥ってしまったのであーる
失敗してるんじゃないの?
フロー結果ではうまくいってるんですよねこれが。
行の挿入の出力結果も特に問題なかったのですよ
試行錯誤してみた結果わかったこと
どうもExcelコネクタの"Add a row into a table"アクションの動作は
非同期っぽく、処理が終了した時点でまだデータが反映されていないっぽい。
にも拘わらず、コピーして、Delete a rowで行を消してるもんだから
結果的に何も反映されていないってことが判明。
さあて、どうする?
待ち時間を設定!
最小値が5秒なので、5秒も待てばうまくいくやろ!
→5秒以上かかる場合あり。(15秒経っても反映されない場合もあったりする)
Do Until条件で、反映されるのを確認する
流れとしては
- Add a row into a tableを実施したテーブルを取得
- 確認チェック用の変数を宣言して、キー項目の内容を代入
- Do Until条件を設定して、変数の中のデータが抽出元のカスタムリストデータと同一になればループを抜けるように設定
- 条件に合致しない場合は、一旦待ち時間5秒を置いて、再度テーブルを取得し、変数に反映
- 条件に合致した場合はファイルコピーという形で後続処理を実行する
という感じです。
結果
うまくいきました!
まとめ
・Excelコネクタを帳票出力などで使用する時は、テンプレートファイルを使用してデータ反映後コピーする
・コネクタによっては非同期なものがあるため、Do Untilなどを使用して結果反映されているか確認する必要がある
・コネクタによっては日本語など2バイト文字で宣言されたレコードやカラムを認識しない場合がある
・変数を宣言するのはすべての条件分岐の前にやる必要がある
→これ改善してくれないかなぁ・・・
・Try and Errorはコーディングレスでも大事 ←これ一番重要!