技術情報ブログ
SharePoint
2025.09.17

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

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

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

Power Appsモデル駆動型アプリは、Dataverseを基盤としたカスタム業務アプリを簡単に構築できるツールです。

Power Appsモデル駆動型アプリでは、添付ファイルを保存する先として、SharePointを選択可能です。 SharePoint 統合の設定を行うと、モデル駆動型アプリとSharePointを連携させ、アプリ上からドキュメントライブラリ上にファイルを保存することができるようになります。

SharePoint 統合の設定

モデル駆動型アプリからSharePointにファイルを保存

また、統合設定を行う際、設定画面の1つに「エンティティに基づく」という項目があります。

エンティティに基づく

この項目、どれを選べばいいのか迷ったことはありませんか?

この記事では、「エンティティに基づく」設定がどのようなものなのか、実際の挙動やパターンごとの使い分けを解説します。

Power Apps モデル駆動型アプリを構築されている方に向けた内容となっております。

弊社では、従来からPower AppsやPower Automateを用いたアプリ開発やその支援を行っております。

また、このような「ローコード」と呼ばれるサービスは、企業様の中で内製化するパターンも増えてきておりますが、 内製化を支援させていただくための、内製化支援サービスも提供しております。

 

参考:SharePoint統合の内容とそのメリット

Power Appsのモデル駆動型アプリとSharePointの統合とは、簡単に言うとモデル駆動型アプリ内で作成したレコードに関連付けられたファイルを、SharePointのライブラリに直接保存できる仕組みのことです。

Power Appsのモデル駆動型アプリとSharePointの統合

モデル駆動型でアプリを構築する際、データソースとしてはDataverse(Microsoft 365上で用いられるクラウド型データベース)を用いることが一般的です。

また、Dataverseでファイルを保存する方法としては、以下2種類があります。

  • ファイル列で保存

  • メモ(annotation)テーブルで保存

上記でもファイルを保存することは可能ですが、どちらもDataverse上に保存されるため、ストレージ容量(正確には、ファイルとデータベース領域)を消費してしまいます。

SharePoint上でファイルを保存することができると、Dataverseのストレージ容量を節約することが可能となります。

Dataverse 容量に基づくストレージの詳細

※注意※

すべてのケースにおいて、SharePointへの保存が最適とは限りません。

もちろん、Dataverse上でファイルを保存する際のメリットもあります。

私が思う最大のメリットとしては、セキュリティに関する部分です。

Dataverseでは、レコードに関するセキュリティを細かく設定することができます。

(例:対象のレコードが「自分だけ閲覧できる」「自部署のユーザーだけ閲覧できる」「全員が閲覧できる」など)

Dataverse上にファイルを保存する場合は、レコードのセキュリティ設定が反映されるため、対象レコードに対して権限がないユーザーが、ファイルを閲覧することはできません。

一方、SharePoint上に保存する仕組みの場合は、Dataverse上のセキュリティ設定がSharePoint側に反映されません。

よって、Dataverseの対象レコードに対して権限がないユーザーが、SharePoint上のファイルにはアクセスできるという事象が発生します。

※Power Automateを作り込むことで、セキュリティ権限を同期させる方法もありますが、実装及び運用のハードルが高いのが実情です。

レコードへのアクセスが限られるテーブルのファイル保存については、ファイル列やメモテーブルを推奨します。

 

調査する内容

今回のポイントは、ドキュメント管理設定の「エンティティに基づく」というオプションです。

実際に選択肢として表示されるのは「空白」「取引先企業」「取引先担当者」の3つですが、それぞれ具体的にどのような挙動となるのか調査しました。

エンティティに基づく

※参考:エンティティとは?※

エンティティとは、Dataverseのテーブルのことを指します。 以前はエンティティと呼ばれておりましたが、現在はテーブルと呼ばれることが一般的です。

調査では以下の3パターンを確認しました。

  • 「エンティティに基づく」が空白


    本パターンで使用するテーブルは以下です。

    テーブル名:tbl_basedon_none

    列名

    データ型

    備考

    Name

    1行テキスト

  • 「エンティティに基づく」が取引先企業


    本パターンで使用するテーブルは以下です。

    テーブル名:tbl_basedon_account

    列名

    データ型

    備考

    Name

    1行テキスト

    basedon_account

    検索(参照列)

    取引先企業テーブルを参照

    ※参考:参照列とは?※

    他のテーブル(例:今回は取引先企業テーブル)を参照するデータ列で、関連レコードをリンクする際に使用します。

  • 「エンティティに基づく」が取引先担当者


    本パターンで使用するテーブルは以下です。

    テーブル名:tbl_basedon_contact

    列名

    データ型

    備考

    Name

    1行テキスト

    basedon_contact

    検索(参照列)

    取引先担当者テーブルを参照

 

各設定値におけるフォルダ構成と挙動

以下では、各パターンを調査した結果を紹介します。

 

「エンティティ」に基づくが空白 と設定した際のフォルダ構成

モデル駆動型アプリを作成し、tbl_basedon_noneテーブルに対してレコードを追加した後、ファイルを添付しました。

レコードの追加とファイルの添付(パターン1)

その結果、SharePointのドキュメントライブラリでは、以下のようなフォルダ構成となりました。

tbl_basedon_none(ドキュメントライブラリ)
└ レコード名(フォルダ)
 └ 添付ファイル(ファイル)
SPO上のフォルダ構成(パターン1)

テーブル名のドキュメントライブラリが作成されて、その配下にレコード名のフォルダが作成されました。


※参考※

フォルダの末尾に付与されている数字(上記図中の、「3297CBCC533DF0118C4E000D3A40B253」部分)については、 Dataverseに保存されたレコードGUIDの値でした。

※GUIDとは、対象レコードを表す一意識別子のことです。

レコードのGUID値

 

「エンティティに基づく」が取引先企業 と設定した際のフォルダ構成

続いては、「エンティティに基づく」が取引先企業の場合です。

モデル駆動型アプリを作成し、tbl_basedon_accountテーブルに対してレコードを追加した後、ファイルを添付しました。

レコードの追加とファイルの添付(パターン2-1)

その結果、SharePointのドキュメントライブラリでは、以下のようなフォルダ構成となりました。

取引先企業(ドキュメントライブラリ)
└ 取引先企業レコード名(フォルダ)
 └ tbl_basedon_account(フォルダ)
  └ レコード名(フォルダ)
   └ 添付ファイル(ファイル)
SPO上のフォルダ構成(パターン2-1)

「取引先企業」を起点に、テーブル > レコードの順で階層化されました。


また、取引先企業欄(basedon_account列)に値を入力しない場合の挙動についても調査しました。

レコードの追加とファイルの添付(パターン2-2)

その結果、SharePointのドキュメントライブラリでは、以下のようなフォルダ構成となりました。

tbl_basedon_account(ドキュメントライブラリ)
 └ レコード名(フォルダ)
  └ 添付ファイル(ファイル)
SPO上のフォルダ構成(パターン2-2)

取引先企業欄に値を入力しない場合は、「tbl_basedon_account」が起点となるようでした。

値の入力有無によって保存場所が変わるため、注意が必要ですね。

※保存場所が変わらないようにするためには、取引先企業欄を必須設定とするといった対応策があります。

 

「エンティティに基づく」が取引先担当者 と設定した際のフォルダ構成

最後は、「エンティティに基づく」が取引先担当者の場合です。

モデル駆動型アプリを作成し、tbl_basedon_contactテーブルに対してレコードを追加した後、ファイルを添付しました。

レコードの追加とファイルの添付(パターン3-1)

その結果、SharePointのドキュメントライブラリでは、以下のようなフォルダ構成となりました。

取引先担当者(ドキュメントライブラリ)
└ 取引先担当者レコード名(フォルダ)
 └ tbl_basedon_contact(フォルダ)
  └ レコード名(フォルダ)
   └ 添付ファイル(ファイル)
SPO上のフォルダ構成(パターン3-1)

「取引先担当者」を起点に、テーブル > レコードの順で階層化されました。


また、取引先担当者欄(basedon_contact列)に値を入力しない場合の挙動についても調査しました。

レコードの追加とファイルの添付(パターン3-2)

その結果、SharePointのドキュメントライブラリでは、以下のようなフォルダ構成となりました。

tbl_basedon_contact(ドキュメントライブラリ)
└ レコード名(フォルダ)
 └ 添付ファイル(ファイル)
SPO上のフォルダ構成(パターン3-2)

パターン2-2と同様、取引先担当者欄に値を入力しない場合は、「tbl_basedon_contact」が起点となるようでした。

 

まとめ

今回の調査結果をまとめると、以下となります。

パターン

保存先のフォルダ構成

備考

1)
「エンティティ」に基づくが空白

tbl_basedon_none(ドキュメントライブラリ)
└ レコード名(フォルダ)
 └ 添付ファイル(ファイル)

2-1)
「エンティティに基づく」が取引先企業

取引先企業(ドキュメントライブラリ)
└ 取引先企業レコード名(フォルダ)
 └ tbl_basedon_account(フォルダ)
  └ レコード名(フォルダ)
   └ 添付ファイル(ファイル)

2-2)
「エンティティに基づく」が取引先企業

tbl_basedon_account(ドキュメントライブラリ)
└ レコード名(フォルダ)
 └ 添付ファイル(ファイル)

取引先企業欄は未入力

3-1)
「エンティティに基づく」が取引先担当者

取引先担当者(ドキュメントライブラリ)
└ 取引先担当者レコード名(フォルダ)
 └ tbl_basedon_contact(フォルダ)
  └ レコード名(フォルダ)
   └ 添付ファイル(ファイル)

3-2)
「エンティティに基づく」が取引先担当者

tbl_basedon_contact(ドキュメントライブラリ)
└ レコード名(フォルダ)
 └ 添付ファイル(ファイル)

取引先担当者欄は未入力

基本的には、「エンティティに基づく」に設定したテーブルが保存先の起点となるようです。
(設定しない場合は、レコードを保存するテーブルが起点となる)

また、「エンティティに基づく」が取引先企業または取引先担当者の場合において、 参照列に値を入力しない場合は、レコードを保存するテーブルが起点となりました。

 

「エンティティに基づく」オプションのパターン別解説

上記にて紹介した3パターンですが、それぞれどんなときに使うのが良いのでしょうか?

  • 空白

    • おすすめ用途:

      • シンプルにレコードごとにファイルを管理したいとき

      • 取引先企業や取引先担当者単位での分類が不要なとき

    • 活用例:

      • 備品管理アプリ

  • 取引先企業

    • おすすめ用途:

      • 取引先企業単位で情報を整理したいとき

    • 活用例:

      • 顧客ごとの案件管理アプリ

  • 取引先担当者

    • おすすめ用途:

      • 担当者個人単位で情報を整理したいとき

    • 活用例:

      • BtoC向け製品の問い合わせ管理アプリ

アプリの目的や運用イメージに合わせて、最適な設定パターンを選択しましょう。

 

おわりに

本日は、Power Apps モデル駆動型アプリとSharePointの統合機能の設定値である、 「エンティティに基づく」という項目の挙動について調査した結果を紹介しました。

SharePoint統合機能は、Dataverseのストレージ容量を節約できる便利な仕組みです。 ぜひ活用を検討してみてください。

今すぐ無料相談で、貴社の課題に合わせた最適なプランをご提案します。

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

小刀稱知哉

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

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

1990年生まれ

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

趣味は読書

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

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

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

Microsoftクラウド関連

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

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

2025.09.03

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

2025.08.27

SharePointで社内ポータルを作りたいと思ったときに読むブログ(後編)

2025.08.20

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

2025.08.13

SharePointで社内ポータルを作りたいと思ったときに読むブログ(前編)

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