SharePointリストを作成する際、Excelファイル(テーブル)からコピーという形でリストを新規作成することが出来る機能があります。
しかし、Excelファイル(テーブル)からSharePointリストを作成する際に、20,000レコードが上限として設定されており、20,000レコード以上存在する場合は作成することが出来ません。
今回は、20,000レコード以上のExcelファイル(テーブル)からPower Automateを利用してSharePointリストを作成する方法をご説明します。
既定の作成方法について
Power Automateを用いた方法を説明する前に、まず上限レコード数に達しない場合の、ExcelファイルからSharePointリストを作成する方法をご説明します。
作成手順
- SharePointサイトを開いた状態で、サイトコンテンツの「新規」>「リスト」からSharePointリストを作成する画面に移動します。
- 「リストを作成」という画面が表示されるので、「Excelから」をクリックします。
- 「Excelから」という画面が表示されるので、ローカルのファイルまたはSharePointサイト内のドキュメントから使用するExcelファイルを選択します。
※この際、Excelファイル内でSharePointリストに登録したいデータはテーブル形式である必要があります。((表のままテーブルとなっていない場合は、SharePointの画面で表をテーブルとする手順が説明されます。) - Excelファイルが読み込めると、下の画像の様に「カスタマイズ」という画面が表示されます。
※ ここでExcelファイル内に複数のテーブルが存在する場合は、使用するテーブルを一つ選択します。
- それぞれの列についてSharePointリスト内でのデータ型が指定できるため、ドロップダウンから必要に応じて任意のデータ型を選択します。
※データ読み込みの際に、SharePoint側でレコードの値から自動でデータ型は指定された状態となっています。
- 「次へ」をクリックするとSharePointリストの名前を設定する画面に移動します。ここで「作成」をクリックすると、SharePointリストがテーブル内のレコードが既に登録された状態で作成されます。
以上がリストを作成する規定の方法となります。
上限を超えた際の挙動
20,000レコードまでは問題なく上記の既定の方法で作成が行えますが、20,001レコードからはエラー表示となります。
既定の方法でSharePointリストの作成を行った場合、「サポートされている最大行数(20000)を超えています。」というエラーが表示され、データの読み込みに失敗します。
Power Automateを用いた作成方法について
上限を超えるレコードを持ったテーブルを使用する場合は、Power Automateのクラウドフローを使用してSharePointリストの作成を行います。
ここで注意したいのが、Power Automateから全ての作成が行えるわけではないことです。
方法を下記のステップ別に説明していきます。
- SharePoint側でExcelデータを格納する空のリストを作成する。
- ExcelファイルをSharePointドキュメント上に保存する。
- Power Automateのフローを作成する。
- フローを実行して、SharePointリストにデータを登録する。
SharePoint側でExcelデータを格納する空のリストを作成する。
ここでは単純に、SharePointリスト名を設定し、Excelデータを格納する為の列を作成していきます。Excelファイル内の列が10個存在する場合は、10列作成してください。
列を作成する際のデータ型は基本的に、テキスト⇔数値のように相互変換可能なデータ型を指定してください。
(「はい/いいえ」型のような特殊な列の場合、Automateからの自動インポートができない場合があります。「はい/いいえ」型の列への登録については、以下の記事を参考にしてみてください。)
なお、SharePointリストをPower AppsやPower Automateで利用することを考えている場合は、列を作成する際に、列名は英数字で作成するようにしてください。
(列名を英数字で設定する理由については以下の記事で説明されています。)
ExcelファイルをSharePointドキュメント上に保存する。
Excelファイルを、SharePointのドキュメント内に保存してください。
保存先は、Power Automateからアクセスできる場所であればどこでも構いません。
※ 今回は、SharePointを利用しましたが、OneDriveやSharePointの別サイトを利用している場合は、適宜読み替えてください。
Power Automateのフローを作成する。
フローの全体像は上記のものになります。フローの上から順に説明していきます。
トリガーは手動としてください。
「表内に存在する行を一覧表示」ステップの設定
設定箇所について説明します。
- 場所:対象のSharePointサイトを選択
- ドキュメントライブラリ:Excelファイルを保存した場所を選択
- ファイル:対象のExcelファイル
- テーブル:Excelファイル内の対象のテーブル
- DateTime形式:ISO 8601
※ここでDateTime形式を設定する理由は、Excelファイル内では日付データをシリアル値として保持しているためです。ISO 8601と設定してあげることで正しく日付データを取得できるようになります。(テーブル内に日付情報を格納したレコードが存在しない場合は設定する必要はありません。)
また、右上の「・・・」から、Excelから読み込む上限値の設定も行います。
「表内に存在する行を一覧表示」アクションでは、規定の設定だと256レコード分の情報しか取得することができません。
「改ページ」をオンに設定し、「しきい値」を今回対象のExcelファイルのレコード数に設定してください。
※しきい値は任意の数字に設定できますが、ここで設定できる上限値は100,000となっているため、100,000以上のレコードが存在する場合は、テーブルを分割し、複数回に分けてフローを実行させる必要があります。
以上で「表内に存在する行を一覧表示」の設定は完了です。
Apply to eachの内の設定
- 以前の手順から出力を選択:value
- 中に「項目の作成」を配置
項目の作成の設定
- サイトのアドレス:対象のSharePointサイトを選択
- リスト名:予め作成したSharePointリストを選択
- 以下に作成したSharePointリストの列名の項目:対応するExcelのテーブルの列名を選択
以上でフローは完成です!
フローの実行
作成したフローを実行し、完了するとSharePointリストにレコードが登録されます。
しかし、フローの中で数万件のレコードに対して繰り返し処理を実行している為、フローの完了までかなり時間がかかります。(今回私は8万件のレコードで実行しましたが完了まで約10時間程かかりました。)
※フロー自体はクラウド上で動作している為、使用中の端末はフロー実行後は閉じていただいて構いません。
作成したフローが正常に動作するかテストしたい場合は、テーブル構成は同じのレコード数の少ないもので行った方が良いと思います。
最後に
今回は、Power Automateを用いて、上限を超えたレコードを持つExcelファイルからSharePointリストを作成する方法をご説明しました。
「業務の中でこれまでExcelでデータを管理していたが、今後はSharePointリストで管理することとなったが、レコード数が多くて困っている」という方がいれば参考になるかと思います。
ここまで説明した後ですが、最近、SharePointのアップデートでCSVファイルからもSharePointリストを作成することが出来るようになったようです。
手順は規定のExcelファイルから作成するものと全く同じで、恐らくCSVからの作成には上限レコードは存在しません(制限についてのドキュメントは確認していないのですが、実際に1,000,000レコードのCSVファイルで実行した限りでは問題なく動作しました。)
ただ、制限がなさそうとはいえ、SharePointリスト自体のレコード数の制限もあるため、あまりに大きなデータ量となる場合は別のデータソースを検討する方が良さそうですね。
坂井 颯斗(日本ビジネスシステムズ株式会社)
中部HC部に所属。現在はIoTシステムの保守作業とPowerPlatformのQA対応を行っています。 最近クラフトビールにハマっています。HazyとベルジャンIPAがお気に入りです。
担当記事一覧