Microsoft 365Power AutomatePower PlatformSharePoint

【Power Automate】SharePointリストをコピーするフローを作成する

今回の記事では、SharePointリストのコピーを自動化するフローを作成していきます。
このフローによって、SharePointリストの構造・中身を別サイトにコピーすることができます。

スポンサーリンク

実現したいこと

最終的なコピーのイメージは下記の通りで、別サイトにSharePointリストをコピーすることができます。

SharePointリストコピーの完成イメージ

前提・準備

コピー元となるSharePointリストを用意します。今回は以下の列を用意しました。

  • タイトル:1行テキスト(既存の列)
  • Details:複数行テキスト
  • Choices:選択肢

※ 今回お伝えする方法では、「画像」列と「参照」列の中身はコピーできませんのでご了承ください。

コピー元SharePointリストの用意

実装方法

全体の流れ

全体の流れとしては、まずリストの構造をコピーした後、リストの中身をコピーしていきます。

SharePointリストコピーの流れ

リストの構造をコピーする

1. コピー元リストのサイトスクリプトを取得

まずはコピー元リストのサイトスクリプトを取得していきます。
サイトスクリプトにはリストの設定情報等が入っており、このデータを利用することでリストをコピーすることができます。

このサイトスクリプトを取得するには、「SharePointにHTTP要求を送信します」アクションを使う必要があります。

サイトスクリプトの取得(HTTP要求)
サイトのアドレス[コピー元リストがあるサイトのURL]
方法POST
URI_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility.GetSiteScriptFromList()
ボディ{
"listUrl": "[コピー元リストのURL]"
}
画像を参考に入力してください

2. サイトスクリプトをオブジェクト化する

サイトスクリプトが取得できたので、それを「作成」アクションでオブジェクト化します。

サイトスクリプトのオブジェクト化

以下の式をそのままコピー&ペーストしてください。

{
  "script": @{body('SharePoint_に_HTTP_要求を送信します')['d']['GetSiteScriptFromList']}
}

3. コピー先にサイトスクリプトを適用する

ここまでで作成したサイトスクリプトのオブジェクトを、コピー先に適用していきます。
ここでも「SharePointにHTTP要求を送信します」アクションを使う必要があります。

サイトスクリプトの適用(HTTP要求)
サイトのアドレス[コピー先サイトのURL]
方法POST
URI_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility.ExecuteTemplateScript()
ボディ@{outputs('作成')}
ボディには先ほどの「作成」アクションの出力を指定してください

4. 作成されたSharePointリストのIDを取得する

ここまででSharePointリストがコピーできたため、出来上がったSharePointリストのIDを取得しておきます。(この後の 手順7. で使用します)

まずは 3. の手順の結果をフィルターします。

SharePointリストIDの取得(アレイのフィルター処理)

差出人に下記の式を入力してください。

body('SharePoint_に_HTTP_要求を送信します_2')['d']['ExecuteTemplateScript']['results']

2行目の左辺には下記の式を入力してください。

empty(item()['TargetId'])

次に「作成」アクションを追加し、フィルターした結果からリストID部分を取得します。

リストIDの取得

「入力」には下記の式を入力してください。

last(body('アレイのフィルター処理'))['TargetId']

ここまででリスト構造のコピーは完了です。

リストの中身をコピーする

リストの構造がコピーできたため、リストの中身をコピーしていきます。

5. コピー元リストの中身を取得する

SharePoint「複数の項目を取得」アクションを使って、コピー元リストの中身を取得します。
サイトアドレス・リスト名にはコピー元リストを指定してください。
(※ コピー元リストのアイテム数が100を超える場合は、「上から順に取得」欄にアイテム数以上の値を設定してください。デフォルトでは100件までしか取得できません)

コピー元リストの中身を取得(複数の項目の取得)

6. 必要な列だけを選択する

5. の結果には余分な列が含まれているため、必要な列だけを「選択」アクションで選択します。

今回は「タイトル」「Details」「Choices」列を選択しています。
左辺には列の内部名、右辺にはそれに対応する動的なコンテンツを指定してください。

必要な列を選択

7. コピー先リストに中身を作成する

最後に、6. の結果をコピー先リストに入れていきます。

複数のアイテムを作成していくので、まずは Apply to Each(日本語名は「それぞれに適用する」)を追加します。
「以前の手順から出力を選択」には、6. の選択アクションの出力を指定します。

Apply to eachの作成

次に、Apply to Eachの中に SharePoint「項目の作成」アクションを追加します。

  • サイトアドレス:コピー先のサイトURL
  • リスト名:手順4. の「作成」アクションの出力
  • 項目:動的なコンテンツから「現在のアイテム」
項目の作成アクションの追加

フローを動かしてみると、正しく動作しリストの構造・中身がコピーされたことが分かります。

フロー実行成功

まとめ

今回は、SharePointリストの構造・中身をコピーするフローを作成しました。
このフローを利用することで、別サイトへSharePointリストをコピーすることができます。

ただしコピーされた後、すべてのSharePoint設定が引き継がれているかを確認することをお勧めします。

スポンサーリンク
Hiromaru

普段からPower Platform・SharePointの技術を広めています!
デザインに力を入れて、見やすい・分かりやすい記事を投稿していきます

シェアする
タイトルとURLをコピーしました