技術情報ブログ
SharePoint
2025.10.29

SharePoint×Power Automate:承認フローの作り方完全ガイド(第2回:トリガー設定~承認前処理の実践編)

SharePoint×Power Automate:承認フローの作り方完全ガイド(第2回:トリガー設定~承認前処理の実践編)
小刀稱知哉

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

SharePointで社内ポータルサイトを構築する際、「申請・承認プロセスを自動化したい」といったご相談をよくいただきます。

Power AutomateはMicrosoft 365に含まれるローコード自動化ツールで、SharePointと連携してさまざまな業務フローを自動化できます。
本記事は、Power Automateの基本操作(例:フローの新規作成やトリガー・アクション追加)ができる方を想定していますが、 「Power Automateは使ったことがあるけど、SharePointとの連携や承認フローは初めて」という方にも分かりやすいよう、段階的に手順やポイントを解説します。

デフォルトのPower Automate承認フローをそのまま使うこともできますが、実運用では「保守性」「柔軟な運用」「エラー対応」などの観点から、自社に最適な承認フローを設計・構築することが大切です。
特に、実運用に耐える承認フローを作るには、要件に合わせたカスタマイズや将来的な保守性を意識した設計が不可欠です。

しかし、いざカスタマイズしようとすると
「どこから手をつけて良いかわからない」 「エラーの原因特定や対処法がわからない」 「意外と設定が複雑」 といった課題に直面することも少なくありません。

また、承認フローの大まかな部分については簡単に作成できますが、本当に重要なのは「実運用に耐えうる処理とする」ことや「保守性の高い」フローを構築することです。

そこで今回は、SharePointの承認フロー構築において重要な設計の考え方と、実運用を見据えた具体的な実装方法を、実際のフロー構築例とともに詳しく解説します。

また、関連する実践的なブログ記事もご紹介しますので、実運用・保守性を意識した承認フローの作り方を知りたい方はぜひ参考にしてください。

前回のブログについては、以下をご参照ください。


もし記事を読んで 「自社でも承認フローを導入したい」「もっと効率的な運用方法を知りたい」と感じた方や、
具体的な設計・構築でお困りの方は、アーティサン株式会社の各種サービスもご活用いただけます。

現場の課題やご要望に合わせて、SharePointやPower Platformの導入・運用をサポートしていますので、ぜひお気軽にご相談ください。


前回は、SharePointで承認フローを構築するための事前準備について説明しました。
今回は、承認フローの構築について説明します。

 

今回の要件

改めて、今回の要件ついて説明します。

要件

  • SharePointサイト内で作成した各種リソースについて申請・承認機能(承認フロー)を実装する

  • 対象は以下

    • サイトのページ(ニュース・ページ)

    • リスト内のアイテム

    • ドキュメントライブラリ内のドキュメント

  • 承認者は固定

  • 必要に応じて、申請者や承認者、サイトの閲覧者に通知する

  • 実運用・保守性を考慮した設計とする

 

構築した承認フロー

全体像イメージ

※注意※

以下のフローは、ドキュメントライブラリ用に作成しています。
サイトのページ(ニュース・ページ)やリストアイテムの場合適宜読み替える箇所がありますが、詳細についてはフローを説明する中で紹介します。

承認フローの全体像

 

承認フローの構造

承認フローの構造としては、全部で6ステップに分割することができます。

各ステップでの内容は以下の通りです。

  • トリガー


    フローを起動する際のトリガーです。

  • 準備


    値を取得するアクションや変数の定義を行います。
    「値を取得するアクション」の必要性については、以下ブログに記載しておりますので、ご参照ください。

    Power Automate設計時のノウハウ紹介(3)【トリガーで得た動的コンテンツをそのまま使用するのはNG!】

  • 承認前の処理


    承認依頼を出す前に行う処理です。
    今回は、申請されたレコードに対して、プロパティ(申請者・申請日時)を追加する処理を行っています。
    また、今回は実装していませんが、承認者をマスタから検索するという処理も、こちらに入れる場合があります。

  • 承認の処理


    承認の処理です。
    承認者に対して、承認依頼を通知します。

  • 承認後の処理


    承認された後の処理です。
    今回は、指定された公開日時まで待機する処理や、
    申請されたレコードに対して、プロパティ(公開日時)を追加する処理を行っています。
    また、公開された際には申請者やサイト閲覧者に対して通知する処理も実装しています。

  • フローにエラーが発生した場合の処理


    フロー全体でエラーが発生した場合の処理です。
    考え方などについては、以前ブログを作成しておりますので、こちらもご確認ください。

    Power Automateのベストプラクティス・アンチパターン(7)【エラー発生時、管理者へ通知する方法】


以降の章では、各ステップごとの詳細について説明していきます!

 

Step1:トリガー

まずはトリガーの設定です。

※承認対象がサイトのページ(ニュース・ページ)の場合は、前回のブログで、既に作成しておりますので、本項目は不要です。

リスト・ドキュメントライブラリの場合はフローを新規作成し、トリガーを設定してください。

  • トリガーの種類

    • リストの場合:インスタントクラウドフロー > 選択したアイテムの場合

    • ドキュメントライブラリの場合:インスタントクラウドフロー > 選択したファイルの場合

補足
申請時に入力したい情報がある場合は、トリガーの「入力の追加」から設定することも可能です。

入力の追加

 

Step2:準備

準備ステップの目的

後続処理で必要な値を「取得アクション」で取得しています。
また、変数の初期化も行っています。

準備

なぜ「値の取得」アクションが必要?
トリガーで得た動的コンテンツを後続アクションで使用する場合、トリガーが変更となった際に変更する影響範囲が大きくなってしまいます。
詳細はこちらの解説記事をご覧ください。

アクションの種類はリソースによって異なります。

  • アクションの種類

    • サイトのページ・リストの場合:SharePoint > 項目の取得

    • ドキュメントライブラリの場合:SharePoint > ファイルのプロパティの取得

また、今回は以下2つの変数を用います。

変数名

種類

設定値

備考

finishLoop

ブール値

false

後述するDo Untilループの制御を行う際に用いる

申請日時

文字列

formatDateTime(utcNow(), ‘yyyy-MM-ddTHH:mm:ssZ’)

申請日時を保存
formatDateTimeで書式を調整

 

Step3:承認前の処理

続いて、承認前の処理です。
本ステップでは、承認依頼を出す前に行いたい処理を記載します。

例えば、以下のような処理です。

  • 申請されたレコードに対して、自動的に値を追加したい。

  • 申請された情報から承認者を動的に設定したい。


今回は「申請されたレコードに対して、自動的に値を追加する」処理として、「申請者」列と「申請日時」列に対して、承認フローの中で追加しています。

Point:申請者や申請日時を別の列として準備したほうが良い理由

皆さんの中で、申請者や申請日時をなぜ別途準備する必要があるのか?と思われる方はいらっしゃいませんか?
仰るとおり、申請者は更新者を見ればわかるし、申請日時も更新日時を見ればわかるかもしれません。

ただし、実際の運用を考えた際、上記ではうまくいかないことがあります。

それは、誰かがデータを編集した際、自動的に更新者や更新日時が上書きされてしまうことに起因します。
値が上書きされてしまうと、申請者や申請日時が想定している値とは異なる可能性があるため、別途準備しています。

本ステップでの具体的な処理は以下となります。

承認前の処理

 

プロパティの更新

「ファイルのプロパティ更新」アクションで設定してる値は以下です。

アクション名

プロパティ

備考

ファイルのプロパティの更新:プロパティの更新

ID

outputs(‘ファイルのプロパティの取得:申請’)?[‘body/ID’]

申請者

triggerOutputs()[‘headers’][‘x-ms-user-email’]

フローをトリガーしたユーザーのメールアドレス

申請日時

申請日時の変数

Point:なぜDo Untilを用いるのか

プロパティを更新する際、Do Untilアクションを用いているのでしょうか?

承認前の処理(Do Until)

皆さんDo Untilを用いずにファイルのプロパティ更新を行った際、「XXによってロックされています」というエラーが表示されたことはありませんか?

共有ロック

申請後もファイルやニュースを開いている際などに上記のエラーが発生します。
そこで、Do Untilを用いてリソースを定期的に確認し、ロックが解除されるまで待つように処理を追加しているわけです。
(私の経験上、大体5~15分程度待てばロックが解除されることが多いです。)

2つの「条件」アクションで設定している条件は以下のとおりです。

アクション名

左辺

右辺

条件:共有ロック状態の場合は、待機させる

body(‘ファイルのプロパティの更新:プロパティの更新’)?[‘message’]

次の値を含む

によってロックされています

条件:正常終了すればループ終了

outputs(‘ファイルのプロパティの更新:プロパティの更新’)[‘statusCode’]

次の値に等しい

200

「条件:共有ロック状態の場合は、待機させる」アクションでは、共有ロックエラーのチェックを行っております。
「条件:正常終了すればループ終了」アクションでは、ファイルのプロパティ更新が正常に終了したか確認し、正常終了の場合はDo Untilを抜けるようにしています。

また、上記2つのアクションに関しては、実行条件の構成についても設定変更しています。

実行委条件の構成

「条件:共有ロック状態の場合は、待機させる」アクションでは、「ファイルのプロパティの更新」アクションが正常終了しなかったときに実行されます。
また、「条件:正常終了すればループ終了」アクションは、すべての場合において実行されるように設定しました。

これにより、以下の処理を実現することができます。

「ファイルのプロパティの更新」アクションがエラー
  → 共有ロックの場合は待機 → 再度「ファイルのプロパティの更新」アクションを実行 → …
「ファイルのプロパティの更新」アクションが正常終了
  → Do Untilループを抜ける

 

「承認の状況」列を更新

プロパティを更新した後は、「承認の状況」列を承認待ち状態に遷移させます。

「承認の状況」列を承認待ち状態へと遷移

各アクションで設定してる値は以下です。

アクション名

プロパティ

ファイル メタデータの取得:承認前処理

ファイル識別子

outputs(‘ファイルのプロパティの取得:申請’)?[‘body/{Identifier}’]

コンテンツの承認状態を設定します:Submit-承認前処理

ID

outputs(‘ファイルのプロパティの取得:申請’)?[‘body/ID’]

Etag

outputs(‘ファイル_メタデータの取得:承認前処理’)?[‘body/ETag’]

 

おわりに

少し長くなってしまいましたので、今回はここまでとさせていただきます。

今回ポイントとして挙げたのは以下です。

  • 申請者や申請日時を別の列として準備するべし

    実際の運用を考えた際、「更新者」列や「更新日時」列では想定外の値が入る可能性があるため、別途列を準備しましょう。

  • プロパティの更新時は、Do Until内で対応するべし

    共有ロックに関するエラーを防ぐため、プロパティを更新する際にはDo Until処理を入れましょう。

今回は、承認フローについて、トリガー → 準備 → 承認前の処理まで作成いたしました。

次回は、承認の処理以降を作成し、フローを完成させます!

💡 SharePointやPower Platformの導入を検討中ですか?

本記事でご紹介した内容以外にも、「自社の業務に合わせた承認フローの設計・運用」や「Power Platformの活用」についてご相談を多くいただいております。
もし「自分たちだけでは難しい」「専門家のサポートがほしい」と感じた際は、アーティサン株式会社のサービスもぜひご活用ください。!

ご相談・お見積りは無料です!

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

小刀稱知哉

🖊小刀稱知哉さんのブログ一覧はこちら

大分県出身(温泉大好き)、現在は茨城県在住

1990年生まれ

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

趣味は読書(最近書道を始めました)

主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!

(最近はCopilot Studioについても勉強中)

Microsoft MVPを受賞させていただきました!

持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200/SC-100

Microsoftクラウド関連

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

SharePoint×Power Automate:承認フローの作り方完全ガイド(第2回:トリガー設定~承認前処理の実践編)

2025.10.15

SharePoint×Power Automate:承認フローの作り方完全ガイド(第1回:事前設定編)

2025.10.01

Copilot Studio活用アイデア(1):Microsoft Learn Docs MCP サーバーと連携したFAQエージェント

2025.09.17

Power Appsモデル駆動型アプリ×SharePoint統合:エンティティに基づくとは?

2025.09.03

SharePointサイトを効率展開!テンプレート化3つの方法を比較してみた

AccessCSSBreakpointObserverリマインドコレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタInfoPathxUnitメディアクエリSet複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPIMatTable.Net Core 3.1スマホForAll承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバーAngular MaterialVSCodePCUpdateContextform差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデータ構造.Net Core Test Explorerレスポンシブロードマップエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットモデル駆動型アプリSortByColumns関数Dataverse for Teams入門技術インポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用Power AppsTypeScriptitem関数初心者Itカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性Power PlatformHTMLGoogle Maps中級者DXcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進SharePointEF CoreMarker Clustererキャンバスアプリ情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ExcelマイグレーションRANK()関数DatePickerメッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Power AutomateFramework CoreDynamics 365 SalesDropdownメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理C#Attribute directivesMicrosoft Translatorviewfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理attributeO/Rマッパーマーカークラスタリングライブラリビューnest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムvalidationazure sql databasetailwindcssアクセス制限入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化ローコードCase式マルチテナントノーコード動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定AngularHTTP Requestドロップダウンメニュー承認collectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docs
PageTop
ページトップに戻る