技術情報ブログ
SharePoint
2025.11.12

SharePoint×Power Automate:承認フローの作り方完全ガイド(第3回:承認の処理~フローの完成まで)

SharePoint×Power Automate:承認フローの作り方完全ガイド(第3回:承認の処理~フローの完成まで)
小刀稱知哉

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

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

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

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

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

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

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

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

 

 


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

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


前回は、承認フローについて、トリガー → 準備 → 承認前の処理まで作成いたしました。
今回は、承認の処理以降を作成し、フローを完成させます!

 

今回の要件

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

要件

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

  • 対象は以下

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

    • リスト内のアイテム

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

  • 承認者は固定

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

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

 

構築した承認フロー

全体像イメージ

※注意※

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

承認フローの全体像

 

承認フローの構造

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

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

  • トリガー


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

  • 準備


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

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

  • 承認前の処理


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

  • 承認の処理


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

  • 承認後の処理


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

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


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

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


前回は、ステップ3:承認前の処理まで構築しました。
今回は、ステップ4:承認の処理から説明していきます。

 

Step4:承認の処理

本ステップでは、実際に承認依頼を出していきます。

具体的な処理は以下となります。

承認の処理

変更チェック

Point:Etagを用いた変更チェック

実際の運用が始まると、申請したけど内容が間違っていたので修正したいという要望があるかと思います。
ただし、Power Automateは一度フローが実行されてしまうと、Power Automateの画面でフローをキャンセルしない限り動作し続けてしまいます。
よって本フローでは、Etagを用いることにより、フローが実行された後にファイルやニュースが編集されていないかを確認します。

参考:Etagとは?

大まかにいうと、リソースが編集された際に加算されていく値です。

Etagとは?

今回は、申請時のEtagと承認を出す直前のEtagを比較することにより、申請されてから承認依頼を出す前までに、編集されていないかを確認します。

Etagのチェック(承認依頼前)

まずは「ファイルのプロパティの取得」アクションでEtagを取得します。
設定値は以下です。

アクション名

プロパティ

備考

ファイルのプロパティの取得:承認処理

ID

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

「条件」アクションでは、申請時のEtagと承認を出す直前のEtagを比較しています。
設定値は以下です。

アクション名

左辺

右辺

条件:承認前に編集されている場合は終了

int(replace(string(outputs(‘ファイルのプロパティの取得:申請’)?[‘body/@odata.etag’]), ‘”‘, ”))

次の値に等しい

add(int(replace(string(outputs(‘ファイルのプロパティの取得:承認処理’)[‘body/@odata.etag’]), ‘”‘, ”)), -2)

式が長くて分かりづらいですが、処理内容としては以下です。

  • Etagを取得

  • ダブルクオーテーションを削除

  • 数値に変換

  • (右辺のみ)値を-2


右辺(承認直前のEtagの値)を-2している理由ですが、承認フローの中でプロパティの更新と「承認の状態」列を変更しているからです。
上記の処理を行った際に、それぞれEtagが+1されます。

2つの処理それぞれにおいて、Etagが+1される

Etagチェックがエラーになった場合は、申請者へ通知を行い、フローを終了しています。
※今回通知の処理については割愛しております。TeamsやOutlookを用いて通知しましょう。

承認依頼の通知

Etagチェックが無事に終了した場合は、承認依頼を通知しましょう。

承認処理

詳細は上記をご確認いただければわかるかと思います。
却下された場合には、「承認の状況」列を却下になるように設定しましょう。

「コンテンツの承認状態を設定します:Rejected」アクションの設定は以下のとおりです。

アクション名

プロパティ

備考

コンテンツの承認状態を設定します:Rejected

ID

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

Etag

outputs(‘コンテンツの承認状態を設定します:Submit-承認前処理’)?[‘body/ETag’]


もし「自社の要件に合わせた承認フローの設計や、Power Automateの活用方法についてもっと詳しく知りたい」 「専門家に相談したい」といったご希望があれば、アーティサン株式会社のサービスもご検討ください。
現場の課題やご要望に合わせて、最適なご提案・サポートを行っています。


 

Step5:承認後の処理

続いて、承認後の処理です。
本ステップでは、承認がOKとなった場合に行う処理を記載します。

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

承認後の処理

公開の開始日まで待機

まずは公開の開始日まで待機します。

公開の開始日まで待機

Point:公開の開始日の空白チェック

「遅延期限」アクションのタイムスタンプ プロパティは、値が空白の場合、エラーとなってしまいます。
上記エラーを防ぐため、公開の開始日が空白でない場合にのみ、待機するようにしています。

「条件」アクションの設定は以下のとおりです。

アクション名

左辺

右辺

条件:公開日時まで待機

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

次の値に等しい

true

Etagのチェック

続いてEtagのチェックを行います。

Step4:承認の処理と同一ですので、詳細は割愛します。

Etagのチェック(承認後)

公開日時の更新

承認後に、公開日時を更新してします。

プロパティの更新(承認後)

Point:「公開日時」列には、公開する直前の値(=utcNow())を設定している理由

承認されたデータを社内ポータルに表示させる際、「新しく公開された情報を上部に表示したい」という要望を多く伺います。
一方で、「承認されたらすぐに公開したいので、特定のデータについては申請時に公開日を設定したくない」という要望もあります。

また運用を開始すると、「公開日を設定したが、承認処理が遅れてしまい、設定した公開日を過ぎてから実際に公開された」というパターンも発生します。

そこで、上記への対応として「公開日時」列には、公開する直前の値(=utcNow())を設定しています。

「承認の状況」列を更新

続いて、「承認の状況」列を承認待ち→承認へと遷移させます。

承認状況列を遷移

Point:「承認の状況」列を承認待ちへと遷移させる理由

Step4:承認前の処理にて、既に「承認の状況」列を承認待ちへと遷移させたのに、なぜ再度同じ処理を行っているのでしょうか。

それは、プロパティを更新すると「承認の状況」列が自動的に下書き状態に戻るためです。
実際にお試しいただければ理解されるかと思いますが、承認待ちにしたレコードを手動で修正すると、「承認の状況」列は自動的に下書きに戻ります。
これは、Power Automateでも同様の現象が発生します。具体的には、承認フロー内で「プロパティの更新」アクションを実行すると、「承認の状況」列は下書きに戻ります。

また、下書き → 承認という遷移はできず、下書き → 承認待ち → 承認とする必要があります。
よって、再度承認待ちへと遷移させています。

各アクションの設定は以下のとおりです。

アクション名

プロパティ

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

ID

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

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

ID

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

Etag

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

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

ID

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

Etag

outputs(‘コンテンツの承認状態を設定します:Submit-承認後処理’)?[‘body/ETag’]

通知

申請者や閲覧者へ向けて通知を行ってください。
詳細は割愛します。

通知

 

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

最後にフローが発生した場合の処理を追加します。

通知

詳細については、以前ブログにて記載しておりますので、以下をご参照ください。

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

Point:Power Automateの例外処理

フロー内の処理でエラーが発生した場合は、例外処理を行うことで、問題の早期発見と対処が可能になります。
本処理は、すべてのフローに追加すべきだと思っておりますので、しっかり追加していきましょう。

以上で完成です!
お疲れ様でした!!

 

おわりに

Sharepointで用いる承認フローを構築しました。

今回重要な点は以下です。

  • Etagを用いて、編集されたかを確認すべし

    Etagを用いると、申請されてから編集されたかどうかをチェックできます。

  • プロパティを変更した場合は、「承認の状況」列を承認待ちへと遷移させるべし

    プロパティを変更した場合は、下書きとなっているため、一度承認待ち(=Submit)へと遷移させましょう。

  • 例外処理を追加すべし

    エラーを即座に発見するために、例外処理を付け加えましょう。

本ブログの内容は、サイトのページ(ニュース・ページ)・リスト・ドキュメントライブラリに使える汎用的な承認フローとなっています。
ただし、実際の運用を考えると、以下機能を追加で要望されることもございます。

  • 承認者を動的に変更したい

  • 承認有無を動的に変更したい

  • 承認者が承認していない場合は、承認リマインドを通知したい

  • 内容に応じてセキュリティの設定を変更したい


上記のご要望がある場合は、ぜひアーティサンへご連絡いただければと思います!

💡 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.11.12

SharePoint×Power Automate:承認フローの作り方完全ガイド(第3回:承認の処理~フローの完成まで)

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統合:エンティティに基づくとは?

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 DocsAccessCSSBreakpointObserverリマインドコレクションセキュリティグループ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管理
PageTop
ページトップに戻る