SPOフォームカスタマイズの話（後編）

この記事は、Power Apps Advent Calendar 2024 12月24日担当分の記事です。

https://qiita.com/advent-calendar/2024/powerapps

今回のAdvent Calendarでは、Power AppsによるSharePointフォームのカスタマイズの話をします。
12月24日は前編、中編、後編のうちの後編になります。
前編では通常のキャンバスアプリとの違い、中編では注意点を書きましたが、後編ではカスタマイズフォームの複製方法について記載します。

### 複製しようと思った理由
SharePointリストは5000件以上のアイテムを格納すると、基本的には抽出や並替えの操作が不可となります。
※以下のように「リスト ビューのしきい値（5000 アイテム）を超えています。」と表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/2d5afeb1-ca6a-125f-b121-38fa10981f9b.png)

別途インデックス列を設定すれば5000件以上のアイテムを格納しても、抽出や並替えが可能ですが、インデックス作成不可の列もあります。（複数の選択子列やユーザまたはグループ列など）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/6e246f99-4e52-e062-4fe0-cf8f3211c9a5.png)

そのため、SharePointリストの複製もできたほうが良いと考えました。

### Power Appsからエクスポート
まずは、複製元のカスタマイズフォームのPower Appsをエクスポートします。

リストの設定画面から「フォームの設定」をクリックして、「バージョンと使用方法を参照」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/318432cb-1853-9975-3409-b1f8ec4d041c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/8e80160a-168b-cf96-b20d-0d172656bbbd.png)

Power Appsのアプリの詳細画面が開くので「エクスポート パッケージ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/9863f7a1-278b-1dc6-f169-eaf5a333bd1a.png)

エクスポート パッケージの画面で「名前」を任意に設定して「エクスポート」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/94490abf-0ba4-8e49-fb53-379d56ff5e40.png)

ダウンロードフォルダ配下に、「名前_YYYYMMDDHHMMSS.zip」ファイルがダウンロードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/9fba1b19-1a62-fa66-4daf-bd987aaf8193.png)

### 複製先リストの情報に書き換える
ダウンロードした「名前_YYYYMMDDHHMMSS.zip」ファイルを以下の階層まで辿ります。
「MicrosoftPowerApps」＞「apps」＞「19桁の数字」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/4d555f98-c769-b889-9f29-0cb181d82bc8.png)

上記の「19桁の数字.json」ファイルをコピーして、デスクトップなどの別のフォルダに貼付けします。
コピーした「19桁の数字.json」ファイルを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/67d27f4c-0cce-c0dd-744f-542b7186e032.png)


上記のsiteId、listId、listUrlの内容を複製先リストの情報に変更して保存します。
siteId、listId、listUrlはコピー先リストの「リストの設定」から確認ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/92e75fc5-8a3a-de1e-8ad1-a10b3cbf66d6.png)

「19桁の数字.jsonファイル」をコピー元の「19桁の数字」フォルダ上で上書きコピー貼付けします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/580bafee-aae0-0558-57b3-18d330c249e0.png)

### Power Appsへインポート
Power Appsのページから「アプリをインポートする」をクリック→「パッケージから（.zip）」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/1a930645-4a8e-0484-fc4e-ec13454a64fc.png)

パッケージのインポートの「アップロード」ボタンをクリックして「名前_YYYYMMDDHHMMSS.zip」を選択して開くボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/6fb1bbd6-40a0-2051-9287-749ca8183127.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/963d3ad9-4670-6eab-5cdf-34d040a4fc15.png)

インポートの設定の「更新」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/fa800878-ef98-4d86-e4c0-8d9a45d2e9d0.png)

「インポートの設定」の「セットアップ」には「新しく作成する」を「リソース名」は思い思いの名前を入力して保存ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/9cf5b545-f961-c5e1-a275-47549c7342ab.png)

インポートをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/3acda08b-e341-93b0-64b5-6b876492f8f3.png)

「すべてのパッケージ リソースが正常にインポートされました」と表示されることを確認します。

### 複製先リストのPower Apps設定
複製先のリストを開き、コマンドバーより［統合］ー［Power Apps］ー［フォームのカスタマイズ］をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/9efd1573-cede-8d3b-79fd-99d275602250.png)

複製先のリストでPower Appsがコピーされた状態で開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/7ad2d81b-0c86-84c7-c2d6-0f896c895934.png)

データには複製元のSharePointリストが接続されていますので削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/5e4ae5f3-73f8-421c-0d72-758bb10340e8.png)

データの追加からSharePointを選択して、複製先のリストを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/61f1da10-2289-570e-bf31-d8344ad329a5.png)

大量にエラーが出ますが、リスト名を置換をすることで解消させます。
虫眼鏡アイコンクリック→置換をクリックして、複製前リスト名から複製先リスト名にすべて置換します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/ba16d8d2-b282-c3b3-37bb-c5e5012b3f79.png)

以上で、複製方法は終わりですが、変なエラーが残る場合は、エラーが出ているコントロール上で以下操作を行うと消えます。
**依存先をクリック→適用をクリック**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/68c2cb31-96bc-d15f-404e-ef425788c492.png)
**依存先の✕をクリック**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532455/c5daf7d0-44c3-5887-ec20-0300b901fed6.png)


### まとめ
後編ではSPOフォームのカスタマイズの複製方法について記載いたしました。
他にも方法があればお教えいただきたくお願いいたします。

通常のキャンバスアプリと違う点が多々ありましたので、今回は前編、中編、後編と記事をまとめました。