Power Appsで作成したアプリケーションからSharePointリストへデータを保存しようとしたときに、保存されない、エラーが発生する、想定と違う値が入るといったトラブルはよく発生します。原因はアプリ側の設定、リスト側の設定、権限、データ型の不一致など多岐にわたります。この記事では、Power AppsからSharePointリストへ入力内容を正しく保存するための確認項目を、実務の切り分け手順とともに解説します。
【要点】この記事で確認すること
- 最初に見る場所: Power Appsの「Patch」関数または「SubmitForm」関数の引数、およびSharePointリストの列の内部名とデータ型。
- 切り分けの軸: アプリ側の問題(関数の記述ミス、データ型変換)、リスト側の問題(列の必須設定、重複不可、参照列)、権限の問題(書き込み権限の有無)。
- 注意点: 会社PCでリストの列を勝手に削除・変更すると他のアプリに影響する可能性があるため、必ず管理者またはチームリーダーに確認してから修正を行ってください。
ADVERTISEMENT
目次
1. データ保存に使う関数の基本を確認する
Power AppsでSharePointリストにデータを書き込む主な方法は、Patch関数とSubmitForm関数(フォームコントロールを使う方法)の2つです。どちらを使う場合でも、基本的な構文と引数の役割を正しく理解していないと、保存に失敗します。
1-1. Patch関数の正しい記述
Patch関数は次のように記述します。
Patch(リスト名, Defaults(リスト名), {列内部名1: 値1, 列内部名2: 値2, ...})
新しい行を追加する場合はDefaults(リスト名)を指定します。既存行を更新する場合はギャラリーなどで選択したレコード(変数)を指定します。ここでよくある失敗は、列の表示名ではなく内部名を使用していないことです。SharePointリストの列は、作成時に自動で生成される内部名(例:Title、Field_x0020_Name)を持ちます。表示名と異なる場合があるため、必ず確認してください。
1-2. SubmitForm関数を使う場合
フォームコントロール(EditFormやDisplayForm)を使う場合、SubmitForm(フォーム名)で保存します。フォームのデータソースが正しくSharePointリストに設定されているか、フォーム内の各カードがリストの列に正しくバインドされているかを確認します。特に、データカードのUpdateプロパティに正しい値が設定されているかが重要です。
| 関数 | 主な用途 | よくあるミス |
|---|---|---|
| Patch | コードで細かく制御したい場合 | 内部名の間違い、データ型不一致 |
| SubmitForm | フォームUIを使う場合 | Updateプロパティの未設定、必須項目の欠落 |
アプリ側の記述が正しくても、リスト側に問題があると保存できません。以下の項目を順に確認してください。
2-1. 列のデータ型とPower Appsの型が一致しているか
SharePointリストの列にはテキスト、数値、日付、選択肢、ユーザー、参照などの型があります。Power Appsで値をセットする際に、型が合っていないとエラーになります。例えば、数値列に文字列を渡すと保存に失敗します。日付列にはDateValue(テキスト)などで変換が必要です。選択肢(Choice)列には{Value: "選択肢の表示値"}というレコードを渡す必要があります。
2-2. 必須項目・一意制約・添付ファイルの設定
リストの列に「必須」が設定されている場合、その列に値が入っていないと保存できません。また、「重複を許可しない」が有効な列に既存の値と同じ値を入れようとするとエラーになります。添付ファイルが有効なリストでは、添付ファイルコントロールの処理も合わせて確認してください。
2-3. 参照列(ルックアップ)やユーザー列の扱い
参照列には、参照先リストのIDを渡します。ユーザー列には、ユーザーのメールアドレスまたはOffice365Usersコネクタで取得したUser()オブジェクトのEmailやClaimsが必要です。形式を間違えると保存されません。
3. 権限と接続設定の問題を切り分ける
Power AppsがSharePointリストにアクセスするには、適切な権限とデータ接続が必要です。
3-1. データソースの接続を確認する
Power Appsの画面左にある「データ」タブから、データソースとしてSharePointリストが正しく追加されているか確認します。接続が切れている場合、再度サインインして接続し直します。また、リストのURLが正しいかも確認してください。
3-2. アプリユーザーのリスト書き込み権限
SharePointリストに対して、アプリを利用するユーザーが「編集」または「投稿」以上の権限を持っている必要があります。権限がない場合は管理者に依頼して権限を付与してもらいます。また、Power Appsが委任(Delegation)の制限を受けると、大量データの保存で問題が起きることもありますが、保存処理自体には委任は関係ありません。
4. エラーメッセージの読み取り方と失敗パターン
Power Appsでエラーが発生した場合、画面に表示されるエラーコードやメッセージを確認します。代表的な失敗パターンとその対処をまとめます。
- 「Patch要求がサーバーによって拒否されました」: 多くの場合、必須列の欠落またはデータ型の不一致が原因です。リストの列設定を見直してください。
- 「この操作は許可されていません」: 権限不足です。ユーザーがリストに対して書き込み権限を持っているか確認します。
- 「データソースがテーブル型ではありません」: データソースにリストではなくSharePointサイトそのものが設定されている可能性があります。正しいリストを指定し直します。
- 「列が見つかりません」: 内部名のスペルミス、または列が削除された可能性があります。内部名を再確認してください。
- 「重複する値は許可されていません」: 一意制約が設定されている列に同じ値を入れています。別の値を指定するか、制約を緩める必要があります。
5. 確認手順:トラブルシューティングの流れ
以下の手順で原因を特定してください。順番に実施することで効率的です。
- Power Appsでアプリを開き、「ファイル」→「データソースの追加」からリストが正しく接続されているか確認します。赤い×マークがあれば再接続します。
- リストの「設定」→「列」で、アプリで使用している列の内部名とデータ型をメモします。内部名は列の設定ページのURLの最後にある「FieldInternalName」で確認できます。
- アプリの画面で、保存ボタンのOnSelectプロパティなどに記述した関数を開き、渡している値のデータ型を確認します。特に日付や選択肢は適切に変換されているかチェックします。
- リストの列設定で「必須」や「重複を許可しない」がONになっていないか確認します。必要な場合は一時的にOFFにしてテスト保存してみます。
- エラーが解決しない場合、Power Appsの「監視ツール」を使って、実際にサーバーへ送信されるリクエストの詳細を確認します。エラーメッセージとHTTPステータスコードが手がかりになります。
6. 管理者へ伝えるべき情報
問題が権限やリストの構造変更に関わる場合は、管理者に連絡して対応を依頼します。その際、以下の情報を伝えるとスムーズです。
- アプリ名と対象のSharePointリストのURL
- 保存に失敗する操作の手順(ボタン名、入力した値など)
- 表示されるエラーメッセージの全文(スクリーンショットがあると良い)
- 期待する動作と実際の動作の違い
- 該当ユーザーがリストに対して持っている権限(閲覧のみなのか編集可能か)
よくある質問(FAQ)
Q1. 保存は成功するが、値が空で保存される
入力コントロール(テキスト入力やドロップダウン)のプロパティが正しく設定されていない可能性があります。例えば、ドロップダウンのSelectedItemsを使ってしまうなど。コントロールのValueプロパティを確認してください。
Q2. 特定の列だけ保存されない
その列の内部名が間違っているか、リスト側で列が削除・名前変更されている可能性があります。内部名を再取得して修正します。
Q3. 選択肢(Choice)列に保存するにはどうすればいいか
{Value: "表示するテキスト"}というレコードを渡します。ドロップダウンの場合は、Dropdown1.Selected.Valueで取得した値をそのまま使えます。
Q4. 画像をリストに保存するには
SharePointリストの画像列(Hyperlink/Picture)または添付ファイルを使います。画像列には画像のURLを文字列として保存し、添付ファイルの場合はPatch関数では直接保存できません。フォームの添付ファイルコントロールを使うか、Power Automateで処理します。
Q5. バックグラウンドで保存したいが、非同期処理は可能か
Power AppsのPatch関数は同期的に動作します。非同期で保存するには、Power Automateフローを呼び出す方法があります。フローでリストにアイテムを作成し、アプリ側はフローの実行をもって完了とします。
まとめ
Power AppsからSharePointリストへデータを保存する際は、アプリ側の関数記述とリスト側の列設定の両方を確認することが重要です。特に、列の内部名とデータ型の一致、必須項目の有無、権限の3点を最初にチェックすると原因の切り分けが早くなります。エラーメッセージを正確に読み取り、必要に応じて管理者へ適切な情報を伝えることで、トラブル解決までの時間を大幅に短縮できます。日常的なメンテナンスとして、リストの列変更時には必ずアプリ側の修正も併せて行うようにしましょう。
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Excel】文字が入っているセルの「個数」を数える!COUNTA関数の簡単な使い方
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
