Excel を利用して Microsoft Dataverse のテーブルにデータをインポートする


# はじめに

Microsoft Dataverse では、Excel からデータをインポートすることが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/19832798-4131-1e32-2ce5-fbef4f47c2f6.png)

個人的に、一回だけ既存のデータをサクッとインポートするような場合、こちらの機能を利用するのが簡単で便利だと思いますが、初めて実施した際少しはまってしまったので、私の手元で上手くいった手順を説明したいと思います。

# データのエクスポート

最初に、既存のデータをエクスポートします。
こちらでエクスポートされたデータを利用するのが簡単かと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/df9fb151-ac92-c313-2caa-15647107fa26.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4fa0d3eb-228d-bb71-e14f-d81be5db770d.png)

# データの加工

エクスポートした .csv ファイルを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/24ceab50-7d91-ab32-b51e-11a75464e174.png)

文字化けしているため、メモ帳で開いてエンコードを変えて保存しなおします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c3ccbff6-476d-d0ea-73cd-2776482d50d2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a0a1e662-ac39-3a4f-a783-ee86b3d59029.png)

再度 Excel で開き、既存のデータを消して追加したいデータを入力、転記などいたします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/87bd4a16-6573-325a-a9b4-03aa5ac6ebae.png)

不要な列も消してデータを入力します。
今回は最小限の列にしておきますが、列が複数ある場合は、既存のデータの入力形式や型を参考にデータを入力します。必要に応じて、既存の Excel のデータなどをコピーして貼り付けてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/1961541b-1ffe-1fc4-728c-833daee26bad.png)

:::note warn
一意識別子 (今回の場合は crcda_department2id) の列は念のため残したままにしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0abd4fb4-4500-280c-13b8-f06c85ebd752.png)

基本的にはインポートする Excel 側には不要と考えられ、消してしまっても問題ないと考えますが、以前、一意識別子 (今回の場合は crcda_department2id) の列を消した際、インポートに失敗したことがあったため、念のため残しておきます。
:::

データを保存します。再度、メモ帳で開き、UTF-8 でエンコードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/44d8f1e1-5250-b4dd-0ba9-484b968d1dbf.png)


# データのインポート

保存したデータをインポートしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/45cd5fed-f500-226a-c4ae-3a1188d1980f.png)

ファイルを指定してアップロードします。
マッピングが正常終了していますが、[列のマップ]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/88dbd6fd-c2de-3c01-1064-40be7bc3f97f.png)

列のマッピングの画面が表示されるため、以下の箇所 (部署は一意識別子) を変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/eea8b318-569d-f372-32ae-2d3a5d810de8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e0c7db22-706a-4825-1b06-91249a3cc8a0.png)

こちらの画面で、Dataverse 側のどの列を Excel 側のどの列とマッピングさせるか設定します。
今回は、列が少なく、自動で作成されたマッピングの設定で問題ないですが、列が多い場合は、念のため確認し、必要に応じて変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/08f78b79-c8dc-0cf0-4bc8-d5819b2432a0.png)


::: note warn
そのままインポートしようとすると、以下のようなエラーが発生することを確認しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/de38a41c-1141-2c68-80a0-6d4db161140e.png)

```
Reason: Bad Request, Header x-ms-client-request-id 97d25089-51d1-4c3e-b4cb-0288ef1cc7da, Invalid type for entity id value
```
:::

インポートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/55e3b833-0b2c-c665-e217-9e93ba226b5b.png)

今回はデータが少なかったのですぐに完了しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/607a5c1b-6fbd-5d3e-d1f9-a8190463f925.png)

問題なくデータが追加されていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3776ee19-c6b1-c09d-231f-09292cdb7caf.png)

# まとめ

今回は、Excel を利用して Microsoft Dataverse のテーブルにデータをインポートする方法について紹介しました。既存のデータを一度サクッとインポートしたい際はこちらの方法が手軽で便利かと思います。