この記事は、Power Apps Advent Calendar 2024 12月23日担当分の記事です。
今回のAdvent Calendarでは、Power AppsによるSharePointフォームのカスタマイズの話をします。
12月23日は前編、中編、後編のうちの中編になります。
前編では通常のキャンバスアプリとの違いについて記載しましたが、中編では主に注意点について記載します。
選択したアイテムをフォームへ表示
通常のキャンバスアプリでは、ギャラリーコントロールで選択されたレコードを編集フォームに表示させるため、編集フォームのItemプロパティに以下式を書きます。
ギャラリーコントロール.Selected
一方、カスタマイズフォームでは、編集フォームのItemプロパティに以下式を指定します。
SharePointIntegration.Selected
これにより、リストで選択されたアイテムを編集フォームに表示できます。
動作検証時の注意点
カスタマイズフォームは、通常のキャンバスアプリと違ってギャラリーコントロールは不要となりますが、このSharePointIntegration.Selectedは一つ注意点があります。
SharePointIntegration.SelectedはPower Apps Studio上で値を確認できません。
実際にPower Apps Studio上で確認した場合、ID=1のレコードが表示、または空の状態になります。
そのため、実際の動作確認はフォームを公開してリスト上で行う必要があります。
通常のキャンバスアプリの場合は、ギャラリーコントロールは編集フォームと同じアプリ内に存在しているため、Power Apps Studioでも編集フォームに表示できるのに対して、カスタマイズフォームの場合は、選択されたレコードはSharePointリスト(アプリ外)から取得することになるため、Power Apps Studio上では確認不可と考えます。
フォームを閉じる
通常のキャンバスアプリではフォームを閉じる処理は無く、ブラウザから✕ボタンを押せば済みましたが、カスタマイズフォームの場合は、フォームを閉じる処理が必要です。
フォームを閉じるのは、RequestHide関数を使います。
公式ページでは以下記載があります。
すべてのフォームの OnSuccess 式に必ず RequestHide() を含めてください。
これを忘れると、SharePoint はフォームを非表示にするタイミングを認識できません。
また、フォームが表示されロジックを実行できる間にすべてのコードが実行できるようにRequestHide()を呼び出した後は重要なコードを実行しないでください。
つまり、編集フォームのOnSuccessプロパティにRequestHide関数を指定する必要があります。
しかも、RequestHide関数を呼び出した後は重要なコードを実行しないとあるので、SubmitForm関数(データソース登録・更新時はOnSuccessプロパティの内容が実行されるので)の後の処理は注意が必要です。
関数指定時の注意点
データソースをSubmitFormとPatchの両方で更新する際には注意が必要となります。
SharePointIntegrationコントロールのOnSaveプロパティと編集フォームコントロールのOnSuccessプロパティに、以下のように関数を指定すると、Patchの前にRequestHideが実行され、エラーとなりました。
そのため、OnSaveプロパティのSubmitFormの後には何も処理を記載せず、OnSuccessプロパティにPatch、RequestHideを順番に指定することで、エラーが改善されます。
まとめ
中編では、選択したアイテムをフォームへ表示した際の動作検証の注意点、フォームを閉じる際の関数指定時の注意点について、記載しました。
後編は、カスタマイズフォームの複製に関する内容になります。