技術情報ブログ
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の活用」についてご相談を多くいただいております。
もし「自分たちだけでは難しい」「専門家のサポートがほしい」と感じた際は、アーティサン株式会社のサービスもぜひご活用ください。!

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

この記事を書いた人
小刀稱知哉

小刀稱 知哉ことね ともや

SharePoint Power Platform全般 Copilot Studio 技術アドバイス・教育支援

Power PlatformやSharePointを中心に設計・開発・アドバイス・教育まで幅広く担当しています。内製化をご希望の場合はお気軽にお問い合わせください!

2025 Microsoft MVP(Power Apps・Power Automate)
PL-200 PL-300 PL-400 PL-600 MS-700 AZ-104 AZ-305 SC-200 SC-100

Microsoftクラウド関連

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

ソリューション内で異動・退職者のPower Apps/Power Automateなどを引き継ぐには?所有者変更の手順と注意点を解説

2026.04.15

SharePoint:『リンクのコピー』は危険?権限トラブルを防ぐ推奨運用を解説

2026.04.08

技術ブログ100本書いてみたら、想像以上に得るものがあった話

2026.04.01

社内に聞く人がいない「孤独なDX」を解決!アーティサンの内製化支援サービス

2026.03.25

SharePointの便利なURLパラメータ活用術|ヘッダー削除・リスト絞り込み・メンテナンスモード

SharePointEF CoreMarker Clusterer中級者DXインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキーMVP共有設定ソリューションエクスポート整数ExcelマイグレーションRANK()関数キャンバスアプリノウハウカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約技術支援情報漏洩対策権限管理データ型Power AutomateFramework CoreDynamics 365 SalesDatePicker情報技術componentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムURLパラメータ技術ブログ 書き方コマンドバーカスタマイズ組織変更C#Attribute directivesMicrosoft TranslatorDropdownメッセージIDダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いメンテナンスモードエンジニア ブログ メリットSharePoint管理センター注文管理アプリattributeO/Rマッパーマーカークラスタリングライブラリviewメールコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入並べ替えブログ 継続 コツDLPサブグリッドvalidationazure sql databasetailwindcssビューfirst()関数dialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較ヘッダー非表示技術力向上権限管理ベストプラクティスDataverse テーブルローコードCase式マルチテナントアクセス制限nestTips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とはリスト フィルタ文章力 鍛え方野良権限部署AngularHTTP Requestドロップダウンメニューノーコード入れ子新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築便利アウトプット 重要性Teams ファイル共有リレーションシップAccessCSSBreakpointObserver承認動的リスト変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate Key野良アプリ対策IT エンジニア 転職OneDrive1対多InfoPathxUnitメディアクエリリマインドcollection検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キーCoEブログ モチベーションつながり参照多対多MatTable.Net Core 3.1スマホSetコレクションMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェック内製化コンサルティングネタ切れ 対策システムカスタマイザーER図Angular MaterialVSCodePCForAll複数の添付ファイルセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDITサポートAI ブログ 活用Connection Reference入門編データ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フロー送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キー月額定額PV数 増やす共同所有者1行テキストモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップフォームメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キー委任問題権限トラブル主要な所有者複数行テキストPower AppsTypeScriptitem関数入門技術form差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Delegationアクセス権限環境変数選択肢Power PlatformHTMLGoogle Maps初心者Itエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計サブスクリプション型支援ファイルパスクラシック画面日付
PageTop
ページトップに戻る