Microsoft 365

ファイルが「開かれて」いると失敗するアクション

Power Automate で SharePoint Online 上のファイルを操作するフローを設計しようとすると、要考慮点が(リストアイテムと比べて)多いのですが、その一つが「ファイルのロック」です。誰かがファイルを編集モードで開いていると、他のユーザーが編集できないよう、ロックがかかります。

ファイルがロックされた状態では、当然ですがフローによる操作、例えば「プロパティの変更」はエラーになります。厳密には、最初のトライが失敗した後、 5 分後、10 分後、とリトライが行われ、それでも失敗するとアクションが失敗する、という流れです(Office 365 ライセンスの場合)

OWAで開いたファイルは編集モード

SharePoint Online のライブラリで Office ファイルをクリックすると、既定ではブラウザ(Office Web Apps)でファイルが開きます。

20220922image01

問題なのは、この時ファイルが即「編集モード」になる、という点です。OWA は複数ユーザーによる同時編集ができるため、普段はあまり意識しませんが、この時点でファイルはロックされています。つまり、社内の誰かがそのファイルを「見て」いるだけで、フローのアクションが失敗する可能性があります。

失敗するアクション、しないアクション

私が自社環境で試した限り、ではありますが、次のような結果になりました。

 「ファイルプロパティの変更」→失敗
 「ファイルのチェックアウト」→ 失敗
 「アイテムまたはフォルダーへのアクセス権の付与」→成功
 「コンテンツの承認状態を設定します」→成功

意外なことに、アクセス権や承認状態の変更はファイルがロックされていても成功するんですね。上二つはファイル本体の変更であるのに対して、下二つはあくまで SharePoint ライブラリが管理するプロパティに対する操作だからか?と推測します。あくまで推測ですけど。

とはいえ。最も多用する「プロパティの変更」が失敗してしまうため、ライブラリでフローを設計する上で、かなり大きな問題であることは変わりません。フローで「ファイルのロックが解除されるまで待機」することができれば良いのですが、いまのところそうしたアクションは存在しません。

現実的な対策としては…アクションの設定でリトライ回数と間隔を増やすくらいでしょうか。その間にユーザーがファイルを閉じてくれれば、エラーになりません。それはそれで「本当にエラーの時」拾いにくくなる、という別の問題はありますが、一定の効果は期待できるかと思います。

20220922image02

それでは、よいお仕事を。