キャンバスアプリを先に自由に作ってしまい、テキスト入力やドロップダウンを自分で配置してしまった…
私は今まさにこの状態です😅
後から連携ってややこしいの?どうすればいい??
と言うことで、SharePointリストを後付けで連携させる方法を調べたので、その内容と手順をまとめてみました😊
既存のキャンバスアプリに後からSharePointリストを連携させる方法
SharePointリストとの連携は全然難しくありません!
むしろ「後からつなぐ」方がレイアウトの自由度が高く、カスタマイズしやすいので、実は優れた選択です。
難易度は「中級くらい」。
基本的なテキスト・選択肢・日付列の連携なら1時間以内、添付ファイル(Attachments)対応を含めても1.5〜3時間程度で形になります(2026年現在)。
- SharePointリスト作成方法は下方にあります
1. 最初にやるべきこと:SharePointリストをデータソースに追加(5分で完了)
- Power Apps Studioで対象のアプリを開く
- 左ペインの「データ」アイコンをクリック(または「表示」→「データソース」)
- + データの追加 を選択
- 「SharePoint」を検索して選択
- 接続したいSharePointサイトのURLを入力(例:
https://yourcompany.sharepoint.com/sites/YourSite) - 対象のリストを選択 → 接続 / 追加
→ これでリスト名(例:案件リスト)がデータソースとして使えるようになります。
2. 既存コントロールをSharePoint列に紐づける(30〜60分)
主なコントロールごとの設定例です。
| コントロール | 主なプロパティ設定例 | 重要ポイント・注意 |
|---|---|---|
| テキスト入力 | Default = ThisItem.Title Update = Self.Text | 列名が日本語の場合は内部名(英語)を確認(リスト設定→列→URLで内部名が見える) |
| ドロップダウン | Items = Choices(案件リスト.優先度) DefaultSelectedItems = ThisItem.優先度.Value | Choice列の場合。複数選択ならCombo box推奨 |
| コンボボックス | Items = Choices(案件リスト.担当者) DefaultSelectedItems = ThisItem.担当者 | 人ピッカー・参照列に最適。複数可も対応 |
| 日付ピッカー | DefaultDate = ThisItem.提出期限 | — |
| ギャラリー(一覧) | Items = 案件リスト (Filter・Sort・Search追加可) | 委任警告が出たら非委任関数(=など)を避け、Search関数を使う |
これを「新規登録画面」「編集画面」「詳細画面」それぞれで設定していきます。
3. 保存の方法:一番おすすめは「Edit Form」を使う(添付も自動対応)
2026年現在でも最も安定・簡単な方法は、Edit Formコントロールを活用することです。
おすすめ手順
- 登録/編集画面に Edit form を挿入(Insert → Forms → Edit)
- DataSource = 追加したSharePointリスト(例:
案件リスト) - Item = 新規なら
Defaults(案件リスト)、編集ならGallery1.Selectedや変数 - Fields → 編集フィールドで必要な列をすべて追加(Attachments列は必ず入れる!)
- 既存の入力コントロール(テキスト・ドロップダウンなど)をデータカードの中にドラッグ&ドロップ(またはカット&ペースト)
- 「登録」ボタンのOnSelectに以下を記述
SubmitForm(Form1); // これ1行で項目+添付ファイルが全部保存!
Notify("登録完了", NotificationType.Success);
Navigate(Screen一覧);
→ これで添付ファイルのアップロード・削除・表示も自動で動きます!
Attachmentsコントロールの仕様ポイント(2026年最新)
- フォーム外に単独で置くとアップロード不可(グレーアウト)→ 必ずフォームの中か、フォームからコピーしたものを使う
- ファイルサイズ上限:SharePoint側で1ファイル約250MB、Power Apps経由では実質70〜100MB程度が安定
- 合計添付容量:1レコードあたり約250MB(複数ファイル合計)
4. 「Patchメインで使いたい」「添付を隠しフォームで処理したい」場合
Patchだけで完璧に添付を扱うのはまだ直接サポートされていません(2026年現在も仕様)。
現実的な回避策ベスト2
- 隠しフォーム方式(おすすめ)
- 非表示のEdit Form(Visible=false)を1つ追加
- Attachments列だけ表示
- 保存ボタンで以下のように記述
// メイン項目をPatchで保存
Patch(
案件リスト,
If(IsBlank(varCurrentItem), Defaults(案件リスト), varCurrentItem),
{
Title: txtTitle.Text,
優先度: ddPriority.Selected.Value,
// 他の列...
}
);
// 添付だけ隠しフォームで保存
SubmitForm(HiddenAttachmentsForm);
HiddenAttachmentsFormのItemはvarCurrentItemやMainForm.LastSubmitに設定。
- Power Automateフローで添付処理
大容量ファイル・大量添付・バージョン管理が必要ならこちら。
→ アプリからフローを呼び出し「SharePointにファイル作成+メタデータ更新」を任せる(容量制限も緩和)
5. 添付ファイルの表示・管理まとめ
| 目的 | おすすめ実装 | 難易度 | 備考・Tips |
|---|---|---|---|
| 新規登録時の添付 | Edit Form内のAttachmentsコントロール | ★☆☆ | SubmitFormで自動保存 |
| 既存レコードへの追加/削除 | 同上 | ★☆☆ | 差分が自動反映 |
| 一覧(Gallery)で添付表示 | Gallery内にAttachmentsコントロールを配置 | ★★☆ | Items = ThisItem.Attachments |
| 添付ファイルのプレビュー | Image / PDF Viewer + Gallery + ThisItem.Attachments | ★★☆ | 複数添付時はGallery + 選択したファイルのプレビューが便利 |
| 大容量・高度管理が必要 | 別ドキュメントライブラリ + 親IDで紐づけ | ★★★ | ファイル250GB対応・バージョン管理・メタデータ検索が可能 |
別ライブラリ方式が必要になるケース例
- 1ファイル10MB超が頻発
- 添付が数十個になる可能性
- 後で添付だけ検索・バージョン履歴を見たい
まずはフォーム+Attachments列で実装し、制限を感じたら別ライブラリに移行するのが現実的です。
6. 大容量・高度管理が必要な場合のベストプラクティス
別ドキュメントライブラリ + 親IDで紐づけ方式
SharePointリストのAttachments列は便利ですが、ファイルサイズ(実質70〜100MB/ファイルが安定上限)や総容量、バージョン管理の欠如、パフォーマンス低下が課題になるケースがあります。
そんなときはSharePointドキュメントライブラリを別途作り、親レコードのID(またはLookup列)で紐づけるのが業界標準のベストプラクティスです。
メリット比較(再掲・拡張版)
| 項目 | SharePointリストのAttachments列 | 別ドキュメントライブラリ(親ID紐づけ) |
|---|---|---|
| 1ファイル最大サイズ | 約250MB(Power Apps経由で70〜100MB安定) | 250GBまで可能(SharePoint標準) |
| ファイル数制限 | 数百個でパフォーマンス低下 | 数千〜数万個もOK |
| バージョン管理 | なし | あり(自動・履歴確認可能) |
| メタデータ(タグ・列) | リスト列のみ | ライブラリ列+フォルダで柔軟 |
| 検索・フィルター | リスト内のみ | ライブラリ全体で高度検索可能 |
| Power Appsアップロード | Attachmentsコントロールで簡単 | Add picture / Attachments + Patch/Flow |
| 権限管理 | リスト単位 | ライブラリ/フォルダ/ファイル単位で細かく |
実装手順概要(2026年現在の現実的な方法)
- SharePoint側準備
- メインのSharePointリスト(例:
案件リスト)に、紐づけ用の列を作成(推奨)- 親ID用:数値列(例:
親ID)またはLookup列(メインリストのIDを参照) - 任意:
親タイトル(テキスト)、アップロード日時(日付)、カスタムタグ列など
- 親ID用:数値列(例:
- 新しいドキュメントライブラリを作成(例:
案件添付ファイル)- ライブラリに上記の列を追加(親IDなど)
- 必要に応じてフォルダ作成を有効化(親IDごとのフォルダ分けも可能)
- Power Apps側準備
- データソースにメインリストとドキュメントライブラリの両方を追加
- 添付アップロード用コントロールとして:
- Attachmentsコントロール(フォーム外で単独使用可)またはAdd pictureコントロール(画像中心の場合)
- 複数ファイル対応なら、コレクションで一時保存:
Collect(UploadFiles, {File: AddMediaButton1.Media, Name: AddMediaButton1.FileName, MIME: AddMediaButton1.MediaType})
- 保存ロジック例(おすすめ:Power Automateフロー併用なしで可能な範囲)
- 新規/編集登録ボタンのOnSelectで、まずメイン項目を保存しIDを取得
- 次にファイルをライブラリにアップロード(Office 365 Groupsコネクタ or Graph API使用) シンプル例(Office365Groups.HttpRequestで直接アップロード)
※事前にサイトIDとドライブIDを取得(SharePointコネクタでLookUp可能)
// 1. メイン項目を保存(Patch or SubmitForm)
SubmitForm(MainForm); // または Patch(...)
Set(varNewID, MainForm.LastSubmit.ID); // 新規ID取得
// 2. 添付ファイルをライブラリにアップロード(ForAllで複数対応)
ForAll(
UploadFiles, // コレクション(Attachments.Attachments や AddMediaButtonからCollect)
Office365Groups.HttpRequest(
"https://graph.microsoft.com/v1.0/sites/" & varSiteID & "/drives/" & varDriveID & "/root:/案件添付ファイル/" & ThisRecord.Name & ":/content",
"PUT",
ThisRecord.File, // バイナリコンテンツ
{},
{ "Content-Type": ThisRecord.MIME }
)
);
// 3. アップロード後、メタデータ更新(親ID紐づけ)
ForAll(
UploadFiles,
Patch(
'案件添付ファイル',
LookUp('案件添付ファイル', FileLeafRef = ThisRecord.Name), // ファイル名で特定
{
親ID: varNewID,
親タイトル: MainForm.LastSubmit.Title
// 他のメタデータ列...
}
)
);
Tips:
- Graph API使用時はOffice 365 Groupsコネクタを追加(プレミアム不要の場合が多い)
- 複数ファイルでエラーが出やすいので、Concurrent関数やDelayを挟むと安定
- フォルダ分けしたい場合:
root:/案件添付ファイル/親ID_&varNewID&/のようにパスを動的に
- 代替:Power Automateフロー併用(大容量・安定重視)
- アプリからフロー呼び出し(Power Apps V2トリガー)
- フローで「SharePoint – ファイルの作成」+「メタデータ更新」
- メリット:容量制限緩和、バージョン管理自動、エラーハンドリング簡単
注意点(2026年現在)
- Attachmentsコントロール単独ではライブラリに直接アップロード不可 → コレクション + HTTPリクエスト or フロー必須
- セキュリティ:アプリ実行ユーザーにライブラリへの「投稿」権限が必要
- パフォーマンス:大量ファイル時はバッチ処理(ForAll + Concurrent)を推奨
この方式に切り替えると、ファイル管理が本格的なドキュメントシステム並みになります。
まずは小規模でテストして、制限を感じたらフロー併用にステップアップするのがおすすめです!
はい、SharePointリストを新規で作成する際の注意点や作成方法を追記するのはとてもおすすめです!
あなたのブログのテーマが「既存キャンバスアプリに後からSharePointリストを連携させる」ですが、読者の多くは「これからリストを作る人もいる」or「後付け前提だけど、新規作成時の設計が悪いと後で苦労する」ケースが多いです。特に、委任制限、列の内部名問題、パフォーマンスがPower Apps × SharePointの定番ハマりポイントなので、そこを先回りして書くと記事の価値がグッと上がります。
SharePointリストを作成する際のベストプラクティス(Power Apps連携前提)
Power Appsで使うSharePointリストを新規作成する場合、後々の連携・パフォーマンスを考えて最初から設計しておくのが鉄則です。
(私も明日から実際にリストを作り直しながらアプリに繋げてみようと思っているので、ここは特に注意深くまとめました!)
1. リスト作成の基本手順(SharePoint Onlineの場合)
- SharePointサイトを開く → 「+ 新規」 → 「リスト」
- リスト名を入力(例:
案件管理リスト) → 作成 - 列を追加(「+ 列の追加」から)
- タイトル列(デフォルト)は、意味のある名前にリネーム(例:
案件名) - 必要な列を追加(テキスト、選択肢、日付、人ピッカー、添付など)
2. Power Apps連携で超重要な注意点(2026年現在)
| 注意ポイント | 理由・問題点 | ベストプラクティス |
|---|---|---|
| 列名は最初に英語で作成 | 日本語列名 → 内部名がエンコード(例:承認期限 → _x627f__x8a8d__x671f__x9650_)され、Power Appsの式で指定しづらい | 列作成時は英語(例:ApprovalDeadline)で内部名を確定 → 後から表示名を日本語に変更 |
| 内部名を確認する習慣 | 内部名は一度決まると変更不可。Power Apps/Power Automateで列指定時に必須 | 列作成後、列設定画面 → URLのField=以降を確認(エンコード前なら英語のまま) |
| 委任可能な列設計 | リストが数千件超えるとSearch/Filterが効かなくなる(委任制限:デフォルト2000件) | – 頻繁にフィルターする列(日付、選択肢、人ピッカー)はインデックス設定 – テキスト検索はStartsWith()推奨 – 1万件超えそうならDataverse検討 |
| 列タイプの選び方 | Lookup列や複数選択は委任が効きにくい。Attachmentsは容量制限あり | – シンプルに:単一テキスト、選択肢、日付、人(単一) – 大容量添付 → 別ドキュメントライブラリ推奨(後述) |
| リストのビュー設定 | デフォルトビューが重いとアプリ起動が遅くなる | アプリ用に軽いビューを作成(必要な列だけ表示、フィルターなし) |
| サイトの選択 | チームサイト vs コミュニケーションサイト → 権限・パフォーマンス差あり | 社内アプリ用は「チームサイト」を推奨(権限管理しやすい) |
Tips:列作成時の鉄則
- 英語で列を作成 → 表示名だけ日本語に変更(内部名は英語のままキープ)
- 例:内部名
Status→ 表示名ステータス - これでPower Appsの式が
ThisItem.Statusでスッキリ書ける!
3. リスト作成後にすぐやるべきこと
- 列のインデックス設定(リスト設定 → インデックスされた列 → 作成)
- テストデータ(10〜100件)を入れて委任警告を確認
- Power Appsからデータソース追加して、Galleryに表示してみる(ここでエラー出たら設計見直し)
新規リストを作るなら、この設計を先に固めておくと、後からアプリに繋げるときに「なんで動かないの…?」が激減します。
まとめ
Power Appsで作った既存アプリにSharePointリストを後から繋げるのは、思ったよりずっと簡単です。
所要時間の目安
- データソース追加 → 5分
- 基本列の紐づけ → 30〜60分
- 保存ロジック+フォーム導入 → 20〜40分
- 添付ファイル対応 → 30分程度(方式による)
(新規リスト作成から始める場合:+30〜60分程度)
合計1.5〜3時間で入力+添付が動く状態になります。
新規リスト作成時は「列内部名を英語で」「委任考慮」「インデックス設定」を先に済ませておくと、後が本当に楽です。
添付ファイル対応のスタートポイント
- 小〜中規模ファイルならSharePointリストのAttachments列(Edit FormにAttachmentsフィールドを追加するだけ!ほぼ自動で動く)
- 大容量・大量ファイルなら別ドキュメントライブラリ+親ID紐づけ(Graph API or Power Automateフロー推奨)
まずはリストのAttachments列から試してみるのが一番手っ取り早いです!
私も明日から実際にこの手順で挑戦してみます。
(まだ着手前なので、リアルな気づきやハマりポイントは追記予定です)
同じように後付け連携にトライする方、一緒にがんばりましょう〜!

