技術情報ブログ
Power Platform
2021.09.22

【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第11回】煩雑なフローをスコープアクションで可読性向上!

【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第11回】煩雑なフローをスコープアクションで可読性向上!

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

「Power AutomateでExcelをSharePointリストにインポートしたい時に考えること」シリーズの第11回です。
今回で本シリーズは最後となります。

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

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

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

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

今回は、スコープアクションを紹介します。

 

「スコープ」アクションについて

突然ですが、前回までで作成したフローをご覧ください。

フロー

動的なExcelデータの取得や256行よりデータが多い場合の対処など、実際の運用に合わせて多くのアクションを追加したため、最初(第2回)に作成したフローと比較すると、フローの可読性が低下してしまいました。

ちなみに最初に作成したフローはこちら。

フロー2

このような際、スコープアクションを用いると、複数のアクションをまとめることが出来るため、可読性を向上させることができます。

また、「エラー発生時、その内容を保持したい」や「エラー発生の有無に関わらず、処理を実行したい」という要望もあると思います。 このような要望に対しては、スコープアクションを用いた例外処理(try catch finally)を実装することで対応できます。

以下では、それぞれの実装方法について説明します。

 

フローの可読性向上

可読性を向上させるために、まとまりのある一連のアクションを、スコープアクションにて囲みます。
今回のフローでは、「ファイルIDを取得するために必要なアクション」と「テーブルIDを取得するために必要なアクション」でそれぞれまとめることができそうです。

フロー3

上記2つをスコープアクションでまとめると、以下のようになります。(第1階層のみで表示)

フロー4

アクションのまとまり毎に「何を行っているのか」がわかりやすくなったため、フローの可読性が向上したと思います。

 

例外処理

スコープアクションを用いて、例外処理を実装してみましょう。

ロジックの修正

  • 例外が発生した場合は、対象行をErrorListへ格納

  • 例外発生の有無に関わらず、RowCount・SkipCountを更新

  • インポート結果をメールにて通知

ロジック

項目の作成アクションを用いてExcelデータをインポートする際、表データの中に異なる形式の値が存在すると、アクションの結果は失敗(例外発生)となります。

例外が発生した場合は、対象行をErrorListへ格納します。
また、例外発生の有無に関わらず、RowCount・SkipCountを更新させます。

例外処理の追加

以下の手順で例外処理を作成します。

  • スコープ(try catch finally)でまとめる

  • catchスコープfinallyスコープの「実行条件の構成」を変更する

 

(1)スコープ(try catch finally)でまとめる

スコープアクションでまとめる前に、インポートできなかった行を格納する配列変数(ErrorList)を追加します。

変数を初期化する(SkipCount)アクションの後続に、変数を初期化する(ErrorList)アクションを追加し、変数を初期化します。

変数の初期化

また、項目の作成アクションの後続に、配列変数に追加アクションも追加します。

配列変数に追加

変数の準備が整いましたので、try・catch・finallyのスコープアクションを作成し、以下のようにアクションを囲みます。

フロー-5

 

(2)catchスコープとfinallyスコープの「実行条件の構成」を変更する

catchスコープfinallyスコープの「実行条件の構成」を変更することで、例外処理機能を実装します。

「実行条件の構成」は第10回で説明しておりますので、参照してください。

設定内容は以下です。

catchスコープ :前のアクションが失敗したら実行

finallyスコープ:前のアクションが成功or失敗orスキップorタイムアウトしたら実行

この設定により、catchアクションは、tryアクションが失敗(例外発生)した場合、実行されます。
また、finallyアクションは、例外発生の有無に関わらず実行されます。

実行条件の構成

最後に、インポート作業終了時、メールにて通知するようアクションを追加しましょう。

Do Untilアクションの後続に条件アクションを追加し、ErrorListの要素数によりメールの送信内容を変更します。

要素数が0の場合  :すべての行が正常にインポートされたされた旨を通知

要素数が0でない場合:インポートに失敗した旨を通知 ※失敗した行も併せて通知

ErrorListの要素数を取得するには、length()関数を用います。
具体的な式は以下です。

length(variables(‘ErrorList’))

メール送信

ここまで作成したフローは以下のとおりです。

フロー-6

 

フロー実行

ではフローを実行してみてください。

表データの中に異なる形式の値がある場合は、その内容がメールにて通知されていると思います!

エラー通知メール

 

さて、全11回でお届けした本連載は今回で終了です。

Power Automateはコーディングの知識が不要であり、IT技術者以外の方も手軽に業務の自動化を実施することができます。

しかし、お手軽といえど多少の慣れは必要になりますので、今回の連載のようにトライアンドエラーを繰り返していきながら、操作方法や各アクションの使い方などを覚えていただくことが技術習得の一番の近道になると思います。

次回以降のテーマですが、「Power Automateの中級者向け」や「Power Appsの初心者向け」に関する内容を書こうと思います!

最後まで読んでいただき、ありがとうございました!

 

 

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

 

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

小刀稱知哉

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

1990年4月9日生まれ

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

趣味は読書

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

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

Power Apps・Power Automateの勉強方法(1)

2024.04.03

非エンジニア【(元)自治体職員】が半年間ローコード開発をしてみたら

2024.03.27

Power Automateのベストプラクティス・アンチパターン(5)【Apply to each×コンカレンシー×変数の設定はNG】

2024.03.20

Power Apps×Teams:Teams上からPower Appsを実行する方法

2024.03.13

Power Apps:SharePointリストと連携したカレンダーアプリを自作してみよう

モデル駆動型アプリ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レスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownviewビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術It情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layoutデータ行の制限引き継ぎ退職所有者を変更異動LoopMicrosoftdesignJSONデザインtemplateテンプレート運用選択肢列参照列ChatGPTOpenAIオープンAIチャットGPTgalleryギャラリースクロールコンテナショートカットキーshortcut keyconcat関数文字制限フロー実行開発環境環境本番環境ライセンス環境構築手順pipelineCI/CDパイプラインDevOpsMicrosoft 365簡易在庫管理時間外通知ファイルフィルター クエリドキュメント ライブラリfilter querysortソートmultiple item複数項目シェアポイント便利機能カレンダーCalendarTeamsローコード開発非エンジニア体験談勉強内製化
PageTop
ページトップに戻る