自動化
PR

SharePointとBoxを双方向で同期する方法|ファイル更新はどこまで反映できるか実機検証【Power Automate】

sanane
記事内に商品プロモーションを含む場合があります

はじめに

この記事では、Power Automate で SharePoint と Box を双方向に同期し、既存ファイルの「更新」まで反映できるのかを、実際にフローを組んで検証した結果を解説します。

前回の記事では、Box と SharePoint の間で「新しく追加されたファイル」を自動コピーするフローを作りました。ただ、あのフローは新規ファイルにしか反応せず、既存ファイルの中身を編集しても同期されません

先に検証結果の結論を言うと、双方向同期は組めますが「非対称」です。更新が完全に反映されるのは SharePoint→Box 方向だけで、Box→SharePoint 方向は新規ファイル専用。そして面白いことに、この非対称性のおかげで、双方向に動かしても無限ループは起きません(実測済み)。順に見ていきましょう。

結論:双方向同期はできる。ただし「更新」は片方向だけ

今回の検証で確定した対応関係は次の通りです。

同期の方向新規ファイルの追加既存ファイルの更新
SharePoint → Box○ 反映される○ 反映される(新バージョンとして保存)
Box → SharePoint○ 反映される× エラーになる(反映されない)

「新規ファイルの追加」の同期フロー(この記事の土台)をまだ作っていない方は、先に前回の記事からどうぞ。本記事はそのフローに手を加えていきます。

あわせて読みたい
SharePointとBoxを連携する方法|Power Automateでファイルを自動同期【2026年版】
SharePointとBoxを連携する方法|Power Automateでファイルを自動同期【2026年版】

【手順】SharePoint→Boxの更新同期フロー

まずは成立する方、SharePoint 側の更新を Box に反映するフローです。前回作った「SharePoint→Boxバックアップ」フローからの変更点は、たった1つ。トリガーを差し替えるだけです。

フローの構成

ファイルが作成または変更されたとき(SharePoint・プロパティのみ) → ② ファイル コンテンツの取得(SharePoint) → ③ ファイルの作成(Box)

トリガーを「作成または変更されたとき」に差し替え

トリガーを SharePoint の「ファイルが作成されたとき」から「ファイルが作成または変更されたとき(プロパティのみ)」に変更します。サイトのアドレスとライブラリの指定は前回と同じです。これで、新規追加だけでなく既存ファイルの上書き保存でもフローが動くようになります。

SharePointトリガー「ファイルが作成または変更されたとき(プロパティのみ)」の設定画面
後続はそのまま。保存してオンにする

②「ファイル コンテンツの取得」と ③ Box「ファイルの作成」は前回のままで OK です(ファイル名に「拡張子付きのファイル名」、コンテンツに「本文」を指定する点も同じ)。保存してフローをオンにします。

更新同期フローがオンになっている詳細画面

実際にファイルを更新して検証

SharePoint のドキュメントライブラリで、既存のテキストファイルを「置き換える」で上書きアップロードしてみます。

SharePointで既存ファイルを置き換えるダイアログ

1〜2分後、フローが発火して成功しました。実行詳細を見ると、3ステップすべて成功しています。

上書きアップロードで発火した実行履歴(成功)
実行詳細で3ステップすべて成功している画面

そして Box 側を見ると——同名ファイルがエラーにならず、「V2」バッジ付きの新バージョンとして保存されていました。ファイルサイズも更新後の内容に変わっています。

これが成立するからくりは Box 側のバージョン管理です。Box の「ファイルの作成」は、同名ファイルが既にあると上書きエラーにするのではなく、自動的に新バージョン(V2, V3…)として積み上げてくれます。おかげで「更新かどうか」をフロー側で判定する必要がなく、トリガーを差し替えるだけで更新同期が完成します。

補足:「ファイルを更新します」アクションは不要

Box コネクタには「ファイルを更新します」という専用アクション(ファイル ID とファイル コンテンツを指定して中身を差し替える)もあります。ただし上記の通り「ファイルの作成」だけでバージョン更新されるため、今回の構成ではこのアクションを使う必要はありませんでした

Boxのファイルを更新しますアクションのパラメーター(ファイルIDとファイルコンテンツ)
SANANE
SANANE

変更点はトリガー1つだけ。Box のバージョン管理が優秀で、拍子抜けするほどあっさり動きました!

Box→SharePoint方向はなぜ更新できないのか

「じゃあ逆方向も同じようにできるのでは?」と思いますよね。実は途中までは行けます。Box コネクタにも「ファイルが変更されたとき」という更新トリガーがちゃんと存在するのです。

Boxのトリガー一覧に「ファイルが変更されたとき」が存在する画面

そこで、Box→SharePoint のフローをこの更新トリガーで組み、オンにしてみます。

Box→SharePoint更新同期テストフローがオンになっている画面

Box 側でファイルを更新(同名で再アップロード)すると、トリガーは正しく発火します。

Boxでファイルを更新して新バージョンとして保存した画面

ところが結果は失敗。Box のトリガーとコンテンツ取得は成功しているのに、最後の SharePoint「ファイルの作成」だけが BadRequest エラーになります。

SharePointのファイルの作成がBadRequest(同名ファイルが既にあります)で失敗した実行詳細

エラーメッセージは「(ファイル名)という名前のファイルは既にあります」。SharePoint の「ファイルの作成」は、詳細パラメーターの Overwrite を「はい」にしていても、既存ファイルへの上書きに失敗しました(バージョン管理が有効なライブラリでの制約とみられます)。Box とは逆の挙動です。

一方、SharePoint 側に同名ファイルが存在しない場合は問題なく成功します。つまり Box→SharePoint 方向は「新規ファイルの追加」専用ということです。

SharePoint側にファイルが無い状態では成功する実行履歴
新規ファイルならSharePoint側に正常に作成される画面

どうしても Box→SharePoint の更新反映が必要な場合は、SharePoint の「ファイルの更新」系アクションを使い、既存ファイルの ID を検索して特定する、といった追加の作り込みが必要になります(本記事では未検証です)。ただ、次のセクションで説明する通り、安易に対応させない方がよい理由があります。

双方向で同時に動かすと無限ループする?【実測】

双方向同期で心配するのが無限ループです。「SP→Box がコピー → それを Box→SP が検知してコピー → それをまた SP→Box が……」という永久機関になりそうですよね。実際に両方向のフローを同じフォルダーの組み合わせで同時にオンにし、テストファイルを1つ投入して確かめました。

結果は——1往復で自然に停止しました。まず SP→Box 方向が発火し、Box へのコピーに成功します。

ループ実験でSharePoint→Box方向のフローが発火し成功した実行履歴

続いて Box 側のコピーを検知した Box→SP 方向が発火しますが、SharePoint には元ファイルが既にあるため、先ほどの「既にあります」エラーで失敗。ここで連鎖が切れます。

実験後のフォルダーを確認しても、ファイルの増殖はゼロ。SharePoint 側の「上書きできない」制約が、意図せず無限ループのブレーキとして機能しているわけです。

ループ実験後のBoxフォルダーでファイルが増殖していないことを確認した画面

この「ループしない」は偶然の産物です。もし Box→SharePoint 側を改造して既存ファイルの更新に対応させると、ブレーキが消えて本当に無限ループし得ます。その場合は、トリガー条件で「更新者がフロー実行アカウントのときは発火させない」といったループ対策を必ずセットで入れてください。

おすすめの運用構成

検証結果を踏まえると、現実的な運用は次の形になります。

推奨:マスターはSharePoint、Boxは自動バックアップ

ファイルの編集は SharePoint 側で行い、本記事の「作成または変更されたとき」トリガーの SP→Box フローだけをオンにする構成です。新規も更新もすべて Box に反映され、ループの心配もありません。Box を共有・受け渡し用の窓口にしたい場合は、前回記事の Box→SP(新規のみ)フローを追加で組み合わせても安全です。

運用にあたっては、次の2点も頭に入れておきましょう。

  • 1回の更新で2回実行されることがある:SharePoint が更新を「プロパティ変更」と「バージョン追加」の2イベントとして通知する場合があります。Box側はバージョンが1つ余分に積まれるだけで実害はありませんが、実行回数は消費します。
  • 反映まで1〜2分かかる:トリガーはポーリング型のため即時ではありません。リアルタイム同期が必要な用途には向きません。

あわせて読みたい

本記事の土台になっている基本編と、Box・SharePoint の関連記事です。

まとめ

  • SP→Box の更新同期は成立:トリガーを「作成または変更されたとき」に差し替えるだけ。Box が同名ファイルを新バージョン(V2, V3…)として自動保存してくれる
  • Box→SP は新規のみ:更新トリガーは存在するが、SharePoint「ファイルの作成」が既存ファイルに上書きできず(Overwrite=はい でも BadRequest)、更新は反映できない
  • 無限ループは起きない(実測1往復で停止):ただし Box→SP 側を更新対応に改造するとループし得るので、その場合はトリガー条件での対策が必須

「マスターは SharePoint、Box は自動バックアップ」の構成なら、フロー1本で新規も更新も安全に同期できます。前回の基本フローに一手間加えるだけなので、ぜひ試してみてください。

記事URLをコピーしました