PowerAutomate Teamsのメッセージ取得件数について
解決したいこと
PowerAutomate(Cloud版)についてです。
MicrosoftTeamsの「メッセージを取得します」のアクションで、20件のメッセージを取得することができたのですが、必要なメッセージは最新3件だけでいいので、20件すべてではなく最新3件のみを取得する方法をご存知の方はご教示いただけますと幸いです。
PowerAutomate(Cloud版)についてです。
MicrosoftTeamsの「メッセージを取得します」のアクションで、20件のメッセージを取得することができたのですが、必要なメッセージは最新3件だけでいいので、20件すべてではなく最新3件のみを取得する方法をご存知の方はご教示いただけますと幸いです。
方法1:アクションの「件数」パラメーターを指定
「メッセージを取得します」アクションの詳細設定を展開すると、
「件数」(Top) または 「最大取得件数」 のようなフィールドがあります。
ここに 3 を設定すると、最新 3 件だけ取得されます。
注:このフィールドはアクションの種類やTeams API仕様に依存するため、UIに出てこない場合は次の方法2に進みます。
方法2:取得後に first() / take() 関数で3件に絞る
「メッセージを取得します」で20件取得した後に、
「データ操作 → 作成」や「Select」アクションで、
take() 関数 を使って上位3件だけ取り出せます。
例(作成アクションや変数に格納する場合の式):
plaintext
コードをコピーする
take(body('メッセージを取得します')?['value'], 3)
body('メッセージを取得します')
→ アクションの出力
['value']
→ メッセージ配列部分
take(…, 3)
→ 配列の先頭3件だけ取得
方法3:ループ処理で3件だけ使う
取得後に「Apply to each」でメッセージを回すとき、
ループの並列処理やカウント制御を使って、3件で終了するようにできます。
例:
「変数 カウント」を用意し、
ループ内でカウントアップ → >=3 になったら「Terminate」でフロー終了。
補足
Teams API的には「最新から順に取得」なので、取得後の配列は先頭が最新メッセージです。
そのため、単純に take() で3件にすれば目的の結果が得られます。