見出し画像

Teamsの同一チャネル内のメッセージへ飛ぶURLをPower Automateで生成したい

TL;DR

Teamsで同一チャネル内のメッセージへ飛ぶURLをクリックしても画面がスクロールせず無反応の場合は、URLにparentMessageIdパラメータを付与しておくとよい。

前置き:

これまで紙+押印だった社内の申請類をデジタル化したいとの要望を受け、Power AppsとPower Automateで申請~承認までの仕組みを作った。

  • フォームから送信された申請はTeamsの専用チャネルに投稿され、ボタン押下で承認できる(AdaptiveCard使用)

  • 未承認のままの申請があれば、Teamsで承認者宛てにリマインドを投稿

  • リマインドには未承認一覧の表があり、申請内容が記載されたTeamsメッセージに飛べるURLも併記されている

  • 申請内容もリマインドも同じチャネル内に投稿されている

リマインド投稿の例。「申請内容を確認する」をクリックすると当該メッセージへ飛ぶ。

期待した挙動:
Teamsの同一チャネル内にあるメッセージのURLをクリックしたら、スクロールしてそのメッセージに飛ぶ(いわゆるホームページの内部リンク的な動き)
実際の結果:
別チャネルのメッセージには飛ぶが、同一チャネル内のメッセージの場合はURLをクリックしても何も起きない。
解決策:
Power Automate側でTeamsメッセージのURL生成時に、parentMessageIdも含めるように修正した。

修正前:

https://teams.microsoft.com/l/message/<チャネルID>/<メッセージID>
(e.g. https://teams.microsoft.com/l/message/19:nekochan_kawaii@thread.v2/3141592653)

修正後:

https://teams.microsoft.com/l/message/<チャネルID>/<メッセージID>?parentMessageId=<メッセージID>
(e.g. https://teams.microsoft.com/l/message/19:nekochan_kawaii@thread.v2/3141592653?parentMessageId=3141592653)

parentMessageIdパラメータを付与することで、チャネル内遷移ではなくスレッド単体を表示する画面に遷移する。
これなら同じチャネル内のメッセージへスクロールアップしてくれない場合でも、むりやりスレッドに遷移してくれるので確実。

ちなみに職場のTeamsだと修正後のURLじゃないと当該メッセージへ移動できませんでしたが、個人で使っているTeams(の "コミュニティ" とやら)だと、修正前のURLでも遷移したりしなかったりでした。
環境やバージョンなどにもよるのかな?Microsoft製品にはあまり深入りしちゃだめですね。

スクショもなくて分かりにくいかもですが、キーワードだけでも誰かの役に立つかもわからんので、記事に残しておきました。

この記事が気に入ったらサポートをしてみませんか?