■はじめに
業務でPowerAutomateの開発を行っている中で、つまずいたこと3つ紹介します。
開発したものは「Sharepointにファイルが格納されたときをトリガーに、Excel転記を行う」という処理です。
簡単にできそうだと感じていた処理で意外とつまずいてしまったので、参考になれば幸いです。
①デフォルトではサブフォルダーも参照してしまう
<事象>
トリガー「Sharepoint- ファイルが作成されたとき」を使用した際に、
デフォルトだと、サブフォルダーも含めて参照してしまっていました。
例えば、下記のようなフォルダ構成の場合に、
「INPUT」フォルダにファイルが格納されたときにのみ実行されてほしいのに、
「処理済」フォルダにファイルが格納されたときも実行されてしまう、という事象が起こっていました。
(フォルダ構成例)
ドキュメント>INPUT
ドキュメント>INPUT>処理済
INPUTフォルダのファイルを「処理済」に移動する処理を、
RPA内で組み込んでいたため、「処理済」に移動したら再度RPAが稼働する、
という問題が起きました。
<回避策>
トリガーの設定>トリガーの条件にて、追加設定を入れることで、
サブフォルダーは参照しない
■追加設定内容
@equals(triggerOutputs()?['body/{Path}'], 'Shared Documents/INPUT'
②処理内でエクセルファイルを参照すると6分間ファイルがロックされる
<事象>
下記の記事のおかげで、アクション「テーブルの取得」でデータを取得する処理を入れると、
6分間ファイルがロックされるということをしりました。
■参考記事(6分間ファイルがロックされる)
https://ippu-biz.com/development/powerplatform/powerautomate/delete-used-file/#google_vignette
INPUTファイルからテーブルの取得⇒ファイルの転記⇒INPUTファイルの移動
という処理を入れていたのですが、なぜかINPUTファイルの移動ができない(共有するためにロックしています。というエラーになる)ということが起こっていました。
<回避策>
処理の順番を変えて、
INPUTファイルに移動⇒移動したINPUTファイルからテーブルの取得⇒ファイルの転記
としたことで回避しました。
恒久的な対応ではないですが、
今回の開発要望的には処理順番を変えても問題なかったので、しのぐことができました。
③Sharepoint内のファイルリネーム処理に苦戦
<事象>
INUTファイルを移動する際に、ファイル名末尾に「_yyyyMMddhhmmss」を付記して、
移動しようとしていました。
ただ、Sharepoint用にはファイルリネームというアクションがないため(OneDriveではあるようですが。)、
どうやって処理させるかに苦戦しました。
<回避策>
最終的には、
ファイル コンテンツの取得⇒ファイルの作成⇒ファイルの削除
の3アクションを使って実現しました。
■各アクションの説明
a.ファイル コンテンツの取得:INPUTファイルの情報を取得
b.ファイルの作成:移動先のフォルダにファイルを新規作成(情報はaで取得したファイル情報)
c.ファイルの削除:INPUTファイルを削除
他にもSharepoint内のファイルリネームの方法で、
「HTTP要求を送信する」というアクションも推奨されていたのですが、
私は上記のやり方で回避いたしました。
■参考記事(ファイルのリネーム)
https://live-style.jp/powerautomate_sharepoint_rename/
今回は私がつまずいた3選の紹介でしたが、
他にも「Outlookのメール本文で不要な改行が入ってしまう」「Teams投稿時に設定したリンクが、ハイパーリンクになったりならなかったりする」など、
小さなつまずきもありました。
今後も開発をいくつか行う予定なので、このあたりの癖は少しずつ慣れていきたいです。
