技術情報ブログ
Power Platform
2021.09.15

【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第10回】インポートがうまくいかない!原因と対処法は?

エンジニア募集しています

アーティサンではエンジニアをはじめ、マネージャー、コンサルタントなどを募集しています。
アーティサンの仕事内容や転職にご興味のある方はこちらもご覧ください。

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

「Power AutomateでExcelをSharePointリストにインポートしたい時に考えること」シリーズの第10回です。

本シリーズでは、私が実際にPower Automateを用いて、「ExcelをSharePointリストにインポートする」フローを作成していきます。
また、作成の際に学んだ点や躓いた点を中心に紹介いたします。

Power Automateでどんな事ができるのか知りたい、実際の作成方法を知りたい、という方に向けた記事です。

前回はExcelの表データが256行より大きい場合の対処法についてお伝えしました。

第9回目の内容はこちらを参照ください。

Power AutomateでExcelをSharePointリストにインポートしたい時に考えること(第9回)

今回は、表データの中に異なる形式の値がある場合の対処法についてお伝えします。

 

インポートするExcelデータ

今回準備した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の更新を行う必要があります。

上記を実装するためには、「実行条件の構成」を用います。

具体的には、変数の設定アクションの「実行条件の構成」画面で、「に成功しました」「に失敗しました」にチェックを入れます。

実行条件の構成

 

修正したフローの再実行

では、フローを再度実行しましょう。

結果-2

異なる形式の値が含まれる行は除外され、正常な行分だけがインポートされました。

 

補足:「Do Untilで設定されているループ回数の最大値」について

Do Untilアクションには、「制限の変更」という設定項目があります。

制限の変更

設定できる値は、以下2つです。

  • 回数

    Do Untilのループ回数の上限値を指定します。(デフォルトでは60)

  • タイムアウト

    Do Untilアクションを開始してから、強制的に処理を終了させるまでの経過時間を指定します。(デフォルトは1時間)

    ※“PT1H”は「ISO 8601 duration format」に準拠しております。詳細は以下を参照ください。

    ISO 8601 #継続時間

「実行の構成」を設定する前にフローを実行した際、5行分の表データしかインポートしないのに、実行時間が長かったと思います。 これは、Do Untilアクションが無限ループに陥り、5行分のインポート操作を60回繰り返したことが原因です。

 

本日はここまで。

今回は表データの中に異なる形式の値がある場合の対処法についてお伝えしました。

ここまで作成したフローで、実装したい機能は全て網羅しました。

次回で本連載もいよいよ最後となります。

最終回はスコープアクションを用いて、フロー全体の可読性を向上することや、try catch機能の追加に挑戦してみたいと思います。

ここまで読んでいただき、ありがとうございました。

 

【このシリーズの過去回一覧】

 

 

 

弊社ではPower Platform(Power AppsやPower Automateなど)を用いてお客様の業務を自動化するご支援を数多く承っております。

業務の中で、「普段手動でやっている業務を自動化できないか」というような疑問がある場合には、お気軽にアーティサン株式会社までお問い合わせください。

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き♥♥)、現在は東京都在住

1990年4月9日生まれ

30才にしてメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!

シェアする
記事カテゴリ
最新記事
2023.03.03

Power Apps:キャンバスアプリでレスポンシブ レイアウト対応のアプリを作成する際の設計方針(1)

2023.02.22

今さら聞けないPower Automate:フローの種類とその違い(2)

2023.02.08

今さら聞けないPower Automate:フローの種類とその違い(1)

2023.01.25

【2023年1月更新】Power Automate 初心者 ~ 中級者 向けロードマップ

2022.08.18

【2023年1月更新】Power Apps の実践的なノウハウ まとめ

2021.06.23

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第1回】4つのシーンごとに手法を比較、その最適解とは?

2
2021.07.14

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第2回】フロー作成でエラー発生!

3
2021.09.03

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第8回】トリガーの条件の指定方法

4
2020.10.02

世界に広がる Power Apps「モデル駆動型アプリ」のココがスゴイ!【第1回】

5
2022.02.16

SharePointのビューに擬似的なアクセス制限をかける方法(1)

--------------------------------------------------->
モデル駆動型アプリPower AppsPower PlatformSharePointExcelPower AutomateC#attributevalidationローコードAngularAccessInfoPathMatTableAngular Materialデータ構造SortByColumns関数TypeScriptHTMLEF CoreマイグレーションFramework CoreAttribute directivesO/Rマッパーazure sql databaseCase式HTTP RequestCSSxUnit.Net Core 3.1VSCode.Net Core Test ExplorerDataverse for Teamsitem関数Google MapsMarker ClustererRANK()関数Dynamics 365 SalesMicrosoft TranslatorマーカークラスタリングライブラリtailwindcssマルチテナントドロップダウンメニューBreakpointObserverメディアクエリスマホPCレスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術ItDX情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layout
PageTop
ページトップに戻る