やりたいこと
ファイルの存在を確認し、ファイルが存在する場合には[SharePoint - ファイルの削除]アクションを使ってそのファイルを削除したいと考えています。しかし、Power Automateを実行すると、「filename is locked for shared use by user email.」というエラーが発生してしまいます。
このエラーの原因として、Power AutomateでExcelテーブルを使用した場合、そのExcelファイルを6分間共有ロックする仕様が影響しています。
回避策を調査したところ、多くの場合、「遅延」アクションを使ってロックが解除されるまで6分間待機する方法が紹介されていました。しかし、この方法は状況によっては不都合が生じます。
本記事では、[SharePointにHTTP要求を送信します]アクションを活用してロックを解除し、ファイルを削除する方法を紹介します。
実装方法
[SharePointにHTTP要求を送信します]アクションで、SharePoint REST APIを実装します。Prefer: bypass-shared-lock
をヘッダーのキーと値に設定することで、共有ロックを解除します。また、エンドポイントでsites/{sub_site}
も設定するようにしてください。
POST https://{site_url}/_api/web/GetFileByServerRelativeUrl('sites/{sub_site}/{folder_name}/{file_name}')
Prefer: "bypass-shared-lock"
If-Match: "{etag or *}"
X-HTTP-Method: "DELETE"
SharePoint REST APIでファイル操作は、以下記事をご参照ください。