既存のファイルをインポートしてSharePointのリストを作成する方法

# はじめに

Workato などの iPaaS 製品を利用する場合に、簡易的なデータベースとして SharePointのリストを利用することも多いと思います。

そのようなときに、既存の Excel ファイルや CSV ファイルの情報を一括登録してリストを作成したいケースもあると思います。

この記事では、既存のファイルをインポートすることで、SharePoint のリストを一括登録して作成する方法について説明します。


# Excel ファイルをインポート

Excel ファイルのデータをインポートする場合、インポート対象のデータをあらかじめテーブル形式にしておく必要があります。

テーブル形式にするには、インポートしたいデータを選択し、「テーブルとして書式設定」をおこないます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/a46652be-8d73-0b29-7802-c2683d266f3b.png)

インポート時に「タイトル」に相当する列は省略できないため、適切なカラムがない場合は、ダミーのタイトルカラムを作成しておきます。

また、「Title」というカラムがある場合、強制的に「タイトル」列に割り当てられしまうため、ここではカラム名を 「Title0」としています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/d4d29771-0582-4409-37fb-a5393a41a2ba.png)

「新しいリストの作成」を実行し、「Excel から」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/38401444-04be-aa7f-f7b8-a8a8baec22ab.png)

作成した Excel ファイルをアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/602838ec-c1ee-8979-c1ca-e9817195c58a.png)

今回のExcelファイルにはテーブルは一つしかないので、自動選択されています。テーブルが複数ある場合は、「このファイルからテーブルを選択します」のプルダウンで適切なテーブルを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/c5fd74af-6329-3e58-a5bd-8568eee41332.png)

列の種類は自動的に判別されますが、必要に応じて変更が可能です。ただし、一部に制限があるようです。例えば、「1day」カラムは本来であれば「はい/いいえ」に変更したいのですが、この画面では選択できませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/0c23e046-cb46-c819-4f41-e66b3e47376b.png)

リストの名前を設定してインポートすると、データが登録された状態でリストが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/96271533-3335-f7f6-769a-03ec4a13a909.png)


「1day」カラムはインポート後であれば、「はい／いいえ」に変更できるようですので、変更してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/d405d66d-de09-f2ef-e39b-b849da738752.png)

「TRUE/FALSE」が「1/0」に変換されていましたが、無事「はい／いいえ」に変換されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/6c648c48-e10b-298c-f2d0-135514f60cc3.png)

[こちらの記事](https://qiita.com/ykkoba/items/298fd31b4120386f46c8)で紹介した列の内部名がどうなっているか確認してみましょう。

「リストの設定」で列を選択して、内部名を確認すると、Excel のテーブルのカラム名を英数字で設定していても、残念ながら「field_1」のような利用しにくい名称に変更されてしまうことがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/48e17371-1e5d-0eab-0c97-fe72b5e7e90e.png)

# CSV ファイルをインポート

次に、CSV ファイルをインポートしてみましょう。ここでは、先程の Excel ファイルを CSV 形式に保存したものを利用します。

「新しいリストの作成」時に「CSVから」を選択し、CSV ファイルをアップロードします。

今度は「URL」がハイパーリンクに割り当てられているようです。また、この画面では「1day」を「はい/いいえ」に設定できるため、設定してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/bcf49ffd-ac40-82a3-2dfc-d19deddeb2d5.png)


こちらもデータが登録された状態でリストが作成されます。「URL」はハイパーリンクとして表示され、「1day」は期待通りに「はい/いいえ」に変換されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/7786f383-7787-145a-e0b1-00b69676305e.png)

「URL」の列の設定を見ると、ハイパーリンクからは他のカラムに変換できないことがわかります。そのため、ハイパーリンクにしたくない場合は、インポート時に他の型を選択しておく必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/d4685f5f-3758-cdea-737d-231988ea5121.png)


こちらの場合も列の内部名がどうなっているか確認していみましょう。

残念ながら、この方法でも「field_1」のような利用しにくい名称に変更されてしまうようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/75904492-7f49-5856-fe06-0354c4f85501.png)


# スキーマを含む CSV ファイルをインポート

SharePoint のリストは、スキーマを含む CSV ファイルという形式でエクスポートが可能です。この方法を利用して、列の内部名を設定できないか試してみます。

今回は列の内部名を利用しやすいものにしているリストを作成して、「スキーマを含む CSV にエクスポート」を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/0588c415-7186-ce2a-316b-5c70888ecd23.png)


エクスポートされたファイルをテキストエディタで開くと、先頭行にスキーマ情報が付与されていることがわかります。列の種類や表示名に加えて内部名と思われる情報も出力されています。

``` JavaScript
ListSchema={"schemaXmlList":["<Field ID=\"{fa564e0f-0c70-4ab9-b863-0177e6ddd247}\" Type=\"Text\" Name=\"Title\" DisplayName=\"タイトル\" Required=\"FALSE\" SourceID=\"http://schemas.microsoft.com/sharepoint/v3\" StaticName=\"Title\" FromBaseType=\"TRUE\" MaxLength=\"255\" />","<Field DisplayName=\"Name\" Format=\"Dropdown\" IsModern=\"TRUE\" MaxLength=\"255\" Name=\"Name\" Title=\"Name\" Type=\"Text\" ID=\"{f350cd2e-c3ac-4062-a480-f94226e642b4}\" StaticName=\"Name\" />","<Field DisplayName=\"Address\" Format=\"Dropdown\" IsModern=\"TRUE\" MaxLength=\"255\" Name=\"Address\" Title=\"Address\" Type=\"Text\" ID=\"{2e68b3ef-a30b-45ea-8420-71bd0604f91d}\" StaticName=\"Address\" />","<Field DisplayName=\"Title\" Format=\"Dropdown\" IsModern=\"TRUE\" MaxLength=\"255\" Name=\"Title0\" Title=\"Title\" Type=\"Text\" ID=\"{df08fae3-0925-47c1-abcf-fecdb4eee2a5}\" StaticName=\"Title0\" />","<Field DisplayName=\"URL\" Format=\"Dropdown\" IsModern=\"TRUE\" MaxLength=\"255\" Name=\"URL\" Title=\"URL\" Type=\"Text\" ID=\"{42033e60-ddf2-4782-95a2-601b7358e0b9}\" StaticName=\"URL\" />","<Field DisplayName=\"H/W\" Format=\"Dropdown\" IsModern=\"TRUE\" MaxLength=\"255\" Name=\"H_x002f_W\" Title=\"H/W\" Type=\"Text\" ID=\"{9d498737-a42a-4966-92c3-a5f6b3a09281}\" StaticName=\"H_x002f_W\" />","<Field CommaSeparator=\"TRUE\" CustomUnitOnRight=\"TRUE\" DisplayName=\"a-b\" Format=\"Dropdown\" IsModern=\"TRUE\" Name=\"a_x002d_b\" Percentage=\"FALSE\" Title=\"a-b\" Type=\"Number\" Unit=\"None\" ID=\"{4b5b5702-680a-4352-9329-63a72aa9577b}\" StaticName=\"a_x002d_b\" />","<Field CommaSeparator=\"TRUE\" CustomUnitOnRight=\"TRUE\" DisplayName=\"Rate%\" Format=\"Dropdown\" IsModern=\"TRUE\" Name=\"Rate_x0025_\" Percentage=\"FALSE\" Title=\"Rate%\" Type=\"Number\" Unit=\"None\" ID=\"{a58bcfd5-390b-45fb-a5f8-8ac6b8b08eaa}\" StaticName=\"Rate_x0025_\" />","<Field DisplayName=\"Test_1\" Format=\"Dropdown\" IsModern=\"TRUE\" MaxLength=\"255\" Name=\"Test_1\" Title=\"Test_1\" Type=\"Text\" ID=\"{b364922a-39a6-42ca-b564-985159b51023}\" StaticName=\"Test_1\" />","<Field AppendOnly=\"FALSE\" DisplayName=\"備考\" Format=\"Dropdown\" IsModern=\"TRUE\" IsolateStyles=\"FALSE\" Name=\"_x5099__x8003_\" RichText=\"FALSE\" RichTextMode=\"Compatible\" Title=\"備考\" Type=\"Note\" ID=\"{5d391ce9-f814-4e70-a696-36d05e75df09}\" StaticName=\"_x5099__x8003_\" />","<Field DisplayName=\"1day\" Format=\"Dropdown\" IsModern=\"TRUE\" Name=\"_x0031_day\" Title=\"1day\" Type=\"Boolean\" ID=\"{c8cb8d51-1ca3-421f-9f59-62e8a7961f85}\" StaticName=\"_x0031_day\"><Default>1</Default></Field>","<Field ID=\"{82642ec8-ef9b-478f-acf9-31f7d45fbc31}\" DisplayName=\"タイトル\" Description=\"\" Name=\"LinkTitle\" SourceID=\"http://schemas.microsoft.com/sharepoint/v3\" StaticName=\"LinkTitle\" Type=\"Computed\" ReadOnly=\"TRUE\" FromBaseType=\"TRUE\" Width=\"150\" DisplayNameSrcField=\"Title\" Sealed=\"FALSE\"><FieldRefs><FieldRef Name=\"Title\" /><FieldRef Name=\"LinkTitleNoMenu\" /><FieldRef Name=\"_EditMenuTableStart2\" /><FieldRef Name=\"_EditMenuTableEnd\" /></FieldRefs><DisplayPattern><FieldSwitch><Expr><GetVar Name=\"FreeForm\" /></Expr><Case Value=\"TRUE\"><Field Name=\"LinkTitleNoMenu\" /></Case><Default><HTML><![CDATA[<div class=\"ms-vb itx\" onmouseover=\"OnItem(this)\" CTXName=\"ctx]]></HTML><Field Name=\"_EditMenuTableStart2\" /><HTML><![CDATA[\">]]></HTML><Field Name=\"LinkTitleNoMenu\" /><HTML><![CDATA[</div>]]></HTML><HTML><![CDATA[<div class=\"s4-ctx\" onmouseover=\"OnChildItem(this.parentNode); return false;\">]]></HTML><HTML><![CDATA[<span>&nbsp;</span>]]></HTML><HTML><![CDATA[<a onfocus=\"OnChildItem(this.parentNode.parentNode); return false;\" onclick=\"PopMenuFromChevron(event); return false;\" href=\"javascript:;\" title=\"メニューを開く\"></a>]]></HTML><HTML><![CDATA[<span>&nbsp;</span>]]></HTML><HTML><![CDATA[</div>]]></HTML></Default></FieldSwitch></DisplayPattern></Field>"]}
```

こちらのファイルをインポートしてみます。

「CSV から」を選択してアップロードすると、スキーマ情報の行は無視された状態でプレビューが表示されます。この時、列の情報は通常の CSV のときとは異なり、「URL」「1day」がエクスポート元のリストの設定に従っていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/b7c907fc-73e7-6aed-38dd-cdbd0e747ff5.png)

インポートすると、データが登録された状態でリストが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/5b40617e-d769-2ea7-4cc5-5c7985dc27bd.png)

このとき、なぜか「field_0」という列が表示されます。「編集」もできず、「リストの設定」にも出てこない列のようですので、「この列を表示しない」にするしかないようです。

こちらの場合も列の内部名がどうなっているか確認していみましょう。

残念ながら、この方法でも内部名は指定できず、「field_1」のような名称に変更されてしまうようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/a02ff88c-6b73-f181-5da7-c1306d103733.png)


列の内部名については別の記事で対応方法を検証したいと思います。


# まとめ

まとめると、以下のようになります。

- SharePoint では、既存の Excel ファイルや CSV ファイルをインポートしてリストを作成できる
  - Excel の場合、データをテーブル形式にしておく必要がある
  - タイトル列は省略できないため、あらかじめ対応する列を作っておく必要がある
- 列の種類は自動選択されるが、インポート時やインポート後に変更することも可能
  - ただし、一部に制限があるため注意が必要
- 列の内部名は自動採番されるため、利用しやすい名前には設定できない


# おわりに

この記事では、Workato などで SharePoint のリストを利用するために、既存の Excel ファイルや CSV ファイルをインポートして作成する方法についてご説明しました。

内部名に関してはこの方法では期待通りの結果が得られないため、回避方法については別の記事で検証したいと思います。

Workatoの導入・導入後の活用などでお困りの場合、Workatoリセラーにご相談する方法もございます。お困りごとがございましたら、認定リセラーの[日立ソリューションズ](https://www.hitachi-solutions.co.jp/rpa/sp/products/workato/?utm_source=sns&utm_medium=qiita&utm_campaign=["62c7358305be7869372a"])へ是非ご相談ください。

# 参考リンク

* 株式会社 日立ソリューションズ
    * [Workato ご紹介サイト](https://www.hitachi-solutions.co.jp/rpa/sp/products/workato/?utm_source=sns&utm_medium=qiita&utm_campaign=["62c7358305be7869372a"])