SharePointでサイトを跨いでファイルをコピーしてみた

私が一番やってたのはSharePoint2013で、そん時のjavascriptから使えそうなファイルコピーAPIって同じサイト内でしか使えなくて、サイトを跨いだコピーは簡単には出来なかった記憶がありました。
参考:https://msdn.microsoft.com/en-us/library/office/dn450841.aspx#bk_FileCopyTo

だからコピーしたいファイルをバイナリでダウンロードしてダイジェスト取得してアップロードするみたいな超煩わしい手順でしか無理でした。
(まあ私はこのサイト見ても出来ませんでしたがね!!)
参考:https://www.techmikael.com/2013/07/how-to-copy-files-between-sites-using.htmlhttps://www.techmikael.com/2013/07/how-to-copy-files-between-sites-using.html

んで同じ問題にこの前ぶち当たって、UIあんのに出来ないなんておかしいだろ!って改めて調べたところ、2016から実装されていたみたいです。
参考:https://docs.microsoft.com/ja-jp/previous-versions/office/mt162552(v=office.15)

SharePointのサイトを開いた状態で開発者ツール(F12)を開いて下のコードを叩いてみましょう。あら簡単、コピー出来ちゃった。

var ctx = SP.ClientContext.get_current();
SP.MoveCopyUtil.copyFile(ctx, "<コピー元ファイルのフルパス>", "<コピー先ファイルのフルパス>");
ctx.executeQueryAsync(
    function () {},
    function () {}
);

サイトコレクションも跨げます。copyFileだけじゃなくて、moveFile、moveFolder、copyFolderもあるので、フォルダ単位の移動/コピーも出来そうです。素敵ですね。もっと早く教えてほしかった。

技術系の検索は1年以内とかで絞ることの重要性を強く感じました。