こんにちは。アーティサン株式会社の小刀稱(ことね)です。
「Power AutomateでExcelをSharePointリストにインポートしたい時に考えること」シリーズの第10回です。
本シリーズでは、私が実際にPower Automateを用いて、「ExcelをSharePointリストにインポートする」フローを作成していきます。
また、作成の際に学んだ点や躓いた点を中心に紹介いたします。
Power Automateでどんな事ができるのか知りたい、実際の作成方法を知りたい、という方に向けた記事です。
前回はExcelの表データが256行より大きい場合の対処法についてお伝えしました。
第9回目の内容はこちらを参照ください。
Power AutomateでExcelをSharePointリストにインポートしたい時に考えること(第9回)
今回は、表データの中に異なる形式の値がある場合の対処法についてお伝えします。
インポートするExcelデータ
今回準備したExcelデータは以下のとおりです。数値列や日付列に文字を挿入しました。
フローの実行結果
今回準備したExcelデータは以下のとおりです。
数値列や日付列に文字を挿入しました。
実行完了までにとても長い時間がかかったと思います。
結果を見ると、表データの中に異なる形式の値がある行はインポートされていないようです。
また、5件の表データしかないのに、なぜかたくさんのデータがインポートされています。
しかもよく見ると、同じデータが複数インポートされているようです。
実行結果を以下にまとめました。
- 表データの中に異なる形式の値がある行はインポートされない
- 同じデータ(1行目・3行目)が複数インポートされている
1に関しては期待どおりの挙動でした。
2に関して、原因と対策について以下で説明します。
原因
上記2は、SharePointリストへ値を追加する項目の作成アクションがエラーとなった際、RowCount変数が更新されず、その結果Do Untilアクションが無限ループに陥ったことが原因です。
少し分かりづらいので、順を追って説明していきます。
まず、SharePointリストに値を追加する項目の作成アクションでは、インポートする行の中に異なる形式の値がある場合、その行はインポートされません。また、アクションの実行結果はエラーとなります。(下図(1))
また、項目の作成アクションはApply to eachアクション内に配置されているため、 「項目の作成」アクションが1回でもエラーとなった場合、Apply to eachアクションもエラーとなります。(下図(2))
Power Automateでは、アクションがエラーとなった場合、デフォルトでは後続のアクションは実行されません。 よって、Apply to eachアクションがエラーとなった場合、RowCountの値を更新する変数の設定アクションが実行されません。(下図(3))
Do untilアクションでは、終了条件に達するまで処理を行いますが、RowCountの値が更新されていないため、終了条件に達することなく、無限ループ(正確にはDo Untilアクションで設定されているループ回数の最大値まで)に陥ってしまいます。(下図(4))
※ループ回数の最大値に関する設定は、後ほど(補足:「Do Untilで設定されているループ回数の最大値」について)説明いたします。
対処法
無限ループを防ぐには、Apply to eachアクション(正確には「項目の作成」アクション)が正常終了・エラー終了どちらの場合でもRowCountの更新を行う必要があります。
上記を実装するためには、「実行条件の構成」を用います。
具体的には、変数の設定アクションの「実行条件の構成」画面で、「に成功しました」「に失敗しました」にチェックを入れます。
修正したフローの再実行
では、フローを再度実行しましょう。
異なる形式の値が含まれる行は除外され、正常な行分だけがインポートされました。
補足:「Do Untilで設定されているループ回数の最大値」について
Do Untilアクションには、「制限の変更」という設定項目があります。
設定できる値は、以下2つです。
-
回数
Do Untilのループ回数の上限値を指定します。(デフォルトでは60)
-
タイムアウト
Do Untilアクションを開始してから、強制的に処理を終了させるまでの経過時間を指定します。(デフォルトは1時間)
※“PT1H”は「ISO 8601 duration format」に準拠しております。詳細は以下を参照ください。
「実行の構成」を設定する前にフローを実行した際、5行分の表データしかインポートしないのに、実行時間が長かったと思います。 これは、Do Untilアクションが無限ループに陥り、5行分のインポート操作を60回繰り返したことが原因です。
本日はここまで。
今回は表データの中に異なる形式の値がある場合の対処法についてお伝えしました。
ここまで作成したフローで、実装したい機能は全て網羅しました。
次回で本連載もいよいよ最後となります。
最終回はスコープアクションを用いて、フロー全体の可読性を向上することや、try catch機能の追加に挑戦してみたいと思います。
ここまで読んでいただき、ありがとうございました。
【このシリーズの過去回一覧】
-
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第1回】
4つのシーンごとに手法を比較、その最適解とは? -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第2回】
フロー作成でエラー発生! -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第3回】
フロー実行時のエラー内容と対処方法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第4回】
タイムゾーン差異と対処法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第5回】
ExcelファイルIDを動的取得 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第6回】
インポートするためのドライブIDを取得する方法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第7回】
ファイルIDとテーブルIDを動的取得 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第8回】
トリガーの条件の指定方法 -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第9回】
Excel表データの行数が多い場合の対処法 -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第10回】
インポートがうまくいかない!原因と対処法は? -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第11回】
煩雑なフローをアクションで可読性向上!
【こちらも合わせて読みたい】
小刀稱知哉
大分県出身(温泉大好き)、現在は東京都在住
1990年生まれ
30才でメーカーの技術営業からIT業界にジョブチェンジ!!!
趣味は読書
主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!
持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200