トリガーの設定
トリガー条件
// ニュースを判別
@equals(triggerBody()?['PromotedState'],2.0)
// メジャーバージョン=投稿済みニュースと判別
@equals(mod(float(triggerBody()?['{VersionNumber}']),1.0),0)
検証メモ
SharePoint サイトの所有者のユーザーアカウントでコネクタを接続した場合、SharePoint サイトのメンバーがニュースを下書き保存すると、直前にメジャーバージョンのニュースがフェッチされてしまう。
色々調べたところ、メンバーがニュースを下書きすると、直前のメジャーバージョンに対して CheckoutUser の情報が加筆されていた。これによってファイルが変更されたと判断されて、直前のメジャーバージョンのニュースがフェッチされてしまうっぽい。
取り急ぎはトリガー条件に下記を加えて、CheckoutUser が書かれたメジャーバージョンをフェッチの対象から除外すると良さそう。
// メンバーによる下書きを除外
@empty(triggerBody()?['CheckoutUser'])
SharePoint、所有者とメンバーで下書きの扱いが違うのが謎。引き続き、SharePoint の仕様を調査。
検証メモ on 2025.03.25
// メンバーによる下書きを除外
@empty(triggerBody()?['CheckoutUser'])
トリガーから上記の条件を抜いたうえで、トリガーの接続を SharePoint サイトのメンバーのアカウントに切り替えて実験。結果として、メンバーがニュースを下書き保存を行っても、直前にメジャーバージョンのニュースがフェッチされない。
下書き保存者とトリガーの接続のアカウントをイコールにしないと、下書き情報を適切に取得できない感あり。故に直近の取得可能なデータである、現在公開されているニュースをフェッチしてしまったと推察。
結論
SharePoint の権限でどうにかするより、Power Automate のトリガー条件を工夫したほうが良さそう。@empty(triggerBody()?['CheckoutUser'])
を条件に引っ掛けるのが今のところ無難。そして特権前提の記事は要注意。