今回は、Excel Online(Business)コネクタの「行の更新」アクション後、SharePointコネクタの「ファイルのプロパティの更新」アクションを利用した際に発生したエラーについて、エラー原因と対策を記載します。
目次
・実装イメージ
・エラー内容
・エラー原因
・エラー回避の検討
・対策
・まとめ
・さいごに
実装イメージ
以下の画像のように、Power Automateを利用して、SharePoint OnlineドキュメントライブラリにアップロードしたExcelファイルのプロパティ情報を同じExcelファイルシート上に定義されているテーブルに自動で書き込む機能を実装します。
また申請用のワークフローを開発するため、SharePointのカスタムフォーム(Power Apps)を利用していました。
エラー内容
今回の機能実装時には、Power AutomateとSharePointのカスタムフォーム(Power Apps)にてエラーが発生しました。
●Power Automate
エラー文:アクション 'ファイルのプロパティの更新' に失敗しました: ファイル "https:// sharepoint.com/sites/blog_demo/sample/フローテスト.xlsx" は、共有するためにによってロックされています。
●SharePointのカスタムフォーム(Power Apps)
エラー文:Patch関数の使用中にネットワーク エラーが発生しました:要求された操作は無効です。
エラー原因
Power Automateの「行の更新」アクションのようにExcelファイルを対象にしたアクションを利用する場合、内部的にファイルロックをかける仕様となっています。
そのため、ファイルロック中はSharePointドキュメントライブラリのプロパティを編集することはできず、エラーが発生します。
エラー回避の検討
Excel Online(Business)コネクタの「スクリプトの実行」アクションとOffice Scriptを組み合わせた、同様の機能の実装も検証しました。
結果として、「行の更新」アクションを利用した時と同じエラーが発生しました。「スクリプトの実行」アクションではファイルロックを回避することはできないようです。
以下の画像のように、SharePoint Onlineの情報を取得し、Office Scriptの引数とすることで、同様の機能が実装可能です。
検証のために利用したOffice Scriptは以下の通りです。
function main(workbook: ExcelScript.Workbook,txtSample: string) {
// Sheet1を取得する
let applicationSheet = workbook.getWorksheet("Sheet1");
// A1セルを取得する
let clA1 = applicationSheet.getRange("A1");
// 選択したシート内のセルにSPOの列の値を入力する
if (txtSample == "") {
clA1.setValue("");
}
else {
clA1.setValue(txtSample);
}
}
対策
ファイルロックは別アクションの処理などで意図的に解除することはできないため、「待ち時間」アクションを追加することでエラーを回避しました。
具体的な待機時間は各環境にて検証が必要ですが、目安として私の環境では6~7分ほどの待機時間が必要でした。
まとめ
今回は、「行の更新」アクションの後にSharePointコネクタの「ファイルのプロパティの更新」アクションを利用した際に発生したエラーについて、エラー原因と対策を記載しました。
同様のエラーが発生した際のご参考になれば幸いです。
さいごに
テンダでは、「こんなプロジェクトに挑戦したい」「こんなチームで働きたい」「理想のチームを創りたい」と願う仲間を求めています。 カジュアル面談も随時受付中です。ぜひ一度お話ししましょう。