2022年3月28日 (月)

[Power Automate] SharePoint のページを別サイトにコピーしよう

SharePoint サイト(※モダンサイトです) でサイトページまたはニュースを作成していて、ついうっかり目的のサイトではないところに作成してしまうことがあります。しかし、サイトのページライブラリで操作メニューを確認してもページのコピー先は同一サイトに限られます。残念ながら既定ではサイト間でのページのコピー機能は用意されていません。ですが、どうしても別サイトに一から作成しなおすのは大変だということもあるでしょう。

そんな時には、Power Automate を使ってサイト間でページをコピーするのが最も手っ取り早い方法です。ただし、この場合も注意しなくてはいけないことがあります。まず、コピーしたときには元のサイト内のコンテンツのリンクを持っているとそのままコピーされることになるので、アクセス権限の設定状況によってはユーザーが画像やファイルなどのコンテンツを参照できないかもしれません。また、リストWebパーツやドキュメント ライブラリWebパーツを追加している場合も、もともと同一サイト内にリストやライブラリがある前提となっています。そのため、同一の名前のリストやライブラリがコピー先のサイトにあればそれを取得することになりますが、当該するものがなければWebパーツは空になります。

このように、いつかの懸念事項があるため技術的にはコピーできるものの、運用上のユーザーが混乱することを懸念して、既定では別サイトに安易にコピーができないようになっているのではないかと推測しています。ですから、Power Automate が使えるからと言って安易に利用せず、注意深く利用するようにしてください。

事前準備

今回はSharePoint コネクターの「ファイルのコピー」アクションを使いますが、このアクションでは、コピー元のサイトの「サイトのページ」ライブラリのGUIDが必要です。これを手軽に取得するには、まずサイトのページライブラリの「設定」ページにアクセスすることです。このページを表示しているときのURLを確認しましょう。

2022-03-25_12-52-59

例えば、URLは次のようになっています。

https://<サイトのURL>/_layouts/15/listedit.aspx?List=%7B39a28bb9-3567-475b-a289-f54555841fc8%7D

この末尾の List=の部分がサイトのページライブラリのGUIDです。%7B は "{" のことで %7D は "}" のことです。そのためこのライブラリの GUID は 39a28bb9-3567-475b-a289-f54555841fc8 ということになります。サイトのページライブラリの GUIDは Power Automate から取得することもできますが、フローを実行することなくWebブラウザーだけでさっと確認できるためこの方法も覚えておくとよいでしょう。

フローの構築

今回のフローでは SharePoint コネクターの「選択したファイルの場合」トリガーを利用します。これにより、いつでもコピーしたいページから直接フローを開始できるようになります。ただし、この「選択したファイルの場合」トリガーを使う場合はフローは必ず既定の環境に作成するようにしてください。

なお、ライブラリ名はドロップダウンからは選択できないためカスタム値として先ほどの GUID を指定しましょう。

2022-03-25_11-56-15

次に「ファイルのプロパティの取得」アクションを追加します。ここではトリガーと同じサイトのアドレスとライブラリ名を指定します。IDは「選択したファイルの場合」トリガーで取得したIDを指定します。

2022-03-28_17-33-44

最後に「ファイルのコピー」アクションを追加します。

現在のサイトのアドレスはコピー元のサイトを選択します。コピーするファイルは「ファイルのプロパティの取得」アクションで取得した識別子を選択します。

2022-03-28_17-35-55

送信先サイトのアドレスはコピー先のサイトのアドレスを指定します。インストール先フォルダーはフォルダーアイコンをクリックして SitePages を選びます。

2022-03-28_17-36-15

別のファイルのがすでに存在する場合の指定は、今回は Copy with a new name を選択します。

2022-03-28_17-38-13

あとはフローを保存して、コピー元のサイトの「サイトのページ」ライブラリから任意のページを選択して、フローを実行するだけです。

2022-03-28_17-38-56

コメント