SharePointリストのテナント間移行を行いたい人なんて少数かもしれませんが、この記事では以下のやり方も纏めてあります。 PnPとか使ってスクリプト書く方法もありますが、テナントによっては管理者に許可されていない場合もありますからね。 こんな感じで を行います。 手順2は手動ですね。 フローの全体イメージはこんな感じです。 こちらは移行元のテナント(Tenant A)で作成して実行します。 アクションを順にみていきましょう。 リストが存在するサイトのアドレスでは取得したいリストが存在するアドレスのリンクを設定します。 リスト名では取得したいリストの表示名を設定します。 SharePoint に HTTP 要求を送信しますで上記変数で設定した情報をもとにリストのフィールドを取得します。 もしすべてのフィールドを取得したければ、 このアクションの出力結果として、以下のようなbodyが取得できます。 欲しいのは array(body('SharePoint_に_HTTP_要求を送信します')?['d']?['results']) これで対象リストのフィールド情報が取得できました。 「作成」で得られた出力はこの後使いますので控えておいてください。 リストを作成してフィールドを作成するフローの全体イメージはこんな感じです。 こちらは移行先のテナント(Tenant B)で作成して実行します。 まずはリスト作成に必要な情報だけみていきましょう。 リストを作成するサイトのアドレスにはリストを作成したいサイトのアドレスを設定します。 リスト名には作成したいリストの内部名(表示名にも利用します)を設定します。 残り二つの変数は、フィールド作成の時に利用するものですので、後述します。 SharePoint に HTTP 要求を送信します(リストの作成)で先ほど設定した2つの変数をもとにリストを作成します。 説明を変えたい場合は、"Description"を変更してください。 リストを作成している箇所は以上です。 続いて先ほど作成したリストに先ほど取得したフィールド情報をもとにフィールドを作成していきます。 ListFieldObjに先ほど移行元で取得したフィールド情報をコピペします。 booleanは条件分岐の 続いてリストのフィールド作成を実行していくわけですが、フィールド作成は1フィールドずつしか行えません(多分。知らんけど。) 試しにArray情報を渡してみたらObject情報を渡せ。とのエラーで怒られました。 よって先ほど設定したArray変数からObject単位で情報を取得してアクションを実行していこうと思います。 これを実現するためにApply to eachを利用しています。 まず最初のJSON の解析ではApply to eachの ここは、フィールドの型などによってサンプルから生成したスキーマが異なり、そのまま利用するとエラーになってしまうので、地味にめんどくさかったですね。 続いて、JSON の解析(metadata)では いよいよフィールドの作成を行っていくのですが、フィールドの型が選択肢か否か。でPOSTする際のBodyが変わってきます。 今ブログを書いているときに思いましたが、型が
まずがChoicesを利用しない(Bodyに設定しない)パターンです。 SharePoint に HTTP 要求を送信します(フィールドの作成)では選択肢を作成しない場合のフィールドの作成を行っています。 続いてChoicesを利用する(Bodyに設定する)パターンです。 Choiceで得られた結果は以下のようになっています。 "Choices": { "__metadata": { "type": "Collection(Edm.String)" }, "results": [ "選択肢1", "選択肢2", "選択肢3" ] } このうち欲しいのは SharePoint に HTTP 要求を送信します(フィールドの作成(Choicesあり))では選択肢を作成する場合のフィールドの作成を行っています。 リストは先ほど作成したリストを指定しています。 以上でTenant A(移行元)からTenant B(移行先)へSPOリストを移行させる仕組みを作成することができました。 とはいえ色々な型やフィールドの設定などは未検証なため正しく動かない部分があるかもです。 もしそのような場合は、どのようなフィールド設定がエラーとなったか?エラー内容はどのようなものか?を教えていただけると助かります。 フローコピペ用コードリスト情報を取得するリストが存在するサイトのアドレスリスト名SharePoint に HTTP 要求を送信します作成リストを作成してフィールドを作成するリストを作成するサイトのアドレスリスト名ListFieldObjbooleanSharePoint に HTTP 要求を送信します(リストの作成)Apply to eachなにこのコード?どうやって使うの?いずれかのコードをクリップボードにコピーした状態でフローを開いて、 「自分のクリップボード > Ctrl +
V」をすると、アクションが選択肢に追加されますので、それを選択すると、フロー内にアクションが追加されます。 ここには自分のテナント内でコピーしたアクションであればCtrl + Vをしなくとも、自動でアクションが溜まっていきます。 ただこの機能、プレビューなだけあって「条件」アクション内や「スイッチ」アクション内などにはこの方法でアクションを追加することはできない。などの制限があるようです。 おわりに短時間で作ったフローなのでちょっと作り雑だったり検証不足だったりする箇所があります。 それでは Power Automate SharePoint リスト取得の上限は?既定のオプションを使用していて、サイト アドレスとリストまたはライブラリ名を指定するだけの場合、Power Automate はリストまたはライブラリから 100 個のアイテムを返します。 大規模なリストで作業している場合は、この制限をリスト ビューのしきい値制限である 5,000 まで増やすことができます。
SharePoint リスト どこにある?SharePoint Online サイトでのリスト作成
SharePoint Online のサイトの左メニューから「ホーム」を選択し、上部に表れる「+新規」をクリックします。 そこから「リスト」を選択すると、リストの新規作成画面に移行できます。 リストの名前と説明を記入し、作成ボタンをクリックすると完了です。
Powerautomateの改ページしきい値は?改ページ(Pagenation)をオンにしないと、しきい値を256より大きい数値にしても256行以上のデータを取得することはできません。
SharePointのリスト数上限は?リストには最大 3,000 万個のアイテムを含めることができ、ライブラリには最大 3,000 万個のファイルとフォルダーを含めることができます。 リスト、ライブラリ、またはフォルダーに 100,000 を超えるアイテムが含まれている場合、リスト、ライブラリ、またはフォルダーの権限の継承を解除することはできません。
|