今回の記事では、SharePointリストのコピーを自動化するフローを作成していきます。
このフローによって、SharePointリストの構造・中身を別サイトにコピーすることができます。
実現したいこと
最終的なコピーのイメージは下記の通りで、別サイトにSharePointリストをコピーすることができます。
前提・準備
コピー元となるSharePointリストを用意します。今回は以下の列を用意しました。
- タイトル:1行テキスト(既存の列)
- Details:複数行テキスト
- Choices:選択肢
※ 今回お伝えする方法では、「画像」列と「参照」列の中身はコピーできませんのでご了承ください。
実装方法
全体の流れ
全体の流れとしては、まずリストの構造をコピーした後、リストの中身をコピーしていきます。
リストの構造をコピーする
1. コピー元リストのサイトスクリプトを取得
まずはコピー元リストのサイトスクリプトを取得していきます。
サイトスクリプトにはリストの設定情報等が入っており、このデータを利用することでリストをコピーすることができます。
このサイトスクリプトを取得するには、「SharePointにHTTP要求を送信します」アクションを使う必要があります。
サイトのアドレス | [コピー元リストがあるサイトのURL] |
方法 | POST |
URI | _api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility.GetSiteScriptFromList() |
ボディ | { |
2. サイトスクリプトをオブジェクト化する
サイトスクリプトが取得できたので、それを「作成」アクションでオブジェクト化します。
以下の式をそのままコピー&ペーストしてください。
{
"script": @{body('SharePoint_に_HTTP_要求を送信します')['d']['GetSiteScriptFromList']}
}
3. コピー先にサイトスクリプトを適用する
ここまでで作成したサイトスクリプトのオブジェクトを、コピー先に適用していきます。
ここでも「SharePointにHTTP要求を送信します」アクションを使う必要があります。
サイトのアドレス | [コピー先サイトのURL] |
方法 | POST |
URI | _api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility.ExecuteTemplateScript() |
ボディ | @{outputs('作成')} |
4. 作成されたSharePointリストのIDを取得する
ここまででSharePointリストがコピーできたため、出来上がったSharePointリストのIDを取得しておきます。(この後の 手順7. で使用します)
まずは 3. の手順の結果をフィルターします。
差出人に下記の式を入力してください。
body('SharePoint_に_HTTP_要求を送信します_2')['d']['ExecuteTemplateScript']['results']
2行目の左辺には下記の式を入力してください。
empty(item()['TargetId'])
次に「作成」アクションを追加し、フィルターした結果からリストID部分を取得します。
「入力」には下記の式を入力してください。
last(body('アレイのフィルター処理'))['TargetId']
ここまででリスト構造のコピーは完了です。
リストの中身をコピーする
リストの構造がコピーできたため、リストの中身をコピーしていきます。
5. コピー元リストの中身を取得する
SharePoint「複数の項目を取得」アクションを使って、コピー元リストの中身を取得します。
サイトアドレス・リスト名にはコピー元リストを指定してください。
(※ コピー元リストのアイテム数が100を超える場合は、「上から順に取得」欄にアイテム数以上の値を設定してください。デフォルトでは100件までしか取得できません)
6. 必要な列だけを選択する
5. の結果には余分な列が含まれているため、必要な列だけを「選択」アクションで選択します。
今回は「タイトル」「Details」「Choices」列を選択しています。
左辺には列の内部名、右辺にはそれに対応する動的なコンテンツを指定してください。
7. コピー先リストに中身を作成する
最後に、6. の結果をコピー先リストに入れていきます。
複数のアイテムを作成していくので、まずは Apply to Each(日本語名は「それぞれに適用する」)を追加します。
「以前の手順から出力を選択」には、6. の選択アクションの出力を指定します。
次に、Apply to Eachの中に SharePoint「項目の作成」アクションを追加します。
- サイトアドレス:コピー先のサイトURL
- リスト名:手順4. の「作成」アクションの出力
- 項目:動的なコンテンツから「現在のアイテム」
フローを動かしてみると、正しく動作しリストの構造・中身がコピーされたことが分かります。
まとめ
今回は、SharePointリストの構造・中身をコピーするフローを作成しました。
このフローを利用することで、別サイトへSharePointリストをコピーすることができます。
ただしコピーされた後、すべてのSharePoint設定が引き継がれているかを確認することをお勧めします。