9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Power AutomateAdvent Calendar 2023

Day 19

Teamsのチャネルを新しいウィンドウで開きたい

Posted at

はじめに

Teamsが新しくなって、スレッドを新しいタブで開くことができるようになりました。
image.png

そのほかにも、チャットやタブ、アプリバーも新しいウィンドウで開けます。
image.png

ですが、チャネルやチームはそのメニューがありません。
image.png

この記事はメニューにない、チャネルを新しいウィンドウで開くためのボタンをPower Automate で作成するフローです。

動作イメージは以下の通りです。

Teamsの設定

この機能を使うためには、設定:Teams ウィンドウでコンテンツを開いています新しいウィンドウを選択した状態にしておくことが必要です。

image.png

この設定をONにしておくと、例えばこのような通知トーストをクリックしたときにも、新しいウィンドウで開く動作となります。
image.png

この設定を利用してチャネルを新しいウィンドウで開くためのボタンを作成します。

チャネルのリンク

チャネルには、「標準チャネル」「共有チャネル」「プライベートチャネル」の3種類があります。
この3種類は、チャネルを作成するときにも確認できますね。
image.png

このうち、「標準チャネル」はチャネルへのリンクを取得することができます。
image.png

ここで取得したリンク先に、ブラウザなどTeamsの外からアクセスしてみます。

ブラウザのアドレスバーに貼り付けて、Enter!
image.png

Teamsデスクトップアプリで開くか確認されるので「開く」をクリック。
image.png

先ほどTeamsの設定を変えておいたので、新しいウィンドウでチャネルが開かれます。
image.png

これを利用すればチャネルが新しいウィンドウで開けるのですが、ブラウザにいちいち移動するのは面倒ですし、なにより「共有チャネル」「プライベートチャネル」ではリンクが取得できません。

これらの問題を解決するために、Power Automateを使用します。

フローの作成

フローの全体像はこのようになっています。
image.png

選択したメッセージを起点にチームを特定し、タスクモジュールで応答で作成したリンクをアダプティブカードにして表示させます。
このトリガーは、プライベートチャネルでは使用できないので、標準チャネルか共有チャネルのメッセージから呼び出す必要があります。

チャネルの一覧表示

必要なチャネルの情報を取得するためのアクションです。
チームの指定は、カスタム値からトリガーのチームIDを使用します。
image.png

取得できる値はこのようになります。
image.png

このアクションで、チャネルへのリンクとなるwebUrlが取得できるので、あとはこのリンクを開くボタンを作ってあげればOKです。

アダプティブカード

説明の順番とフローの順番が前後しますが、最終的にはこのタスクモジュールでアダプティブカードを表示させます。
image.png

実際の動きとしてはこのような画面をTeamsで表示し、ボタンをクリックできるようにしています。
image.png

ということで、最終的に作りたいカードから先に考えておきます。

リンクが開けさえすればよいので、Action.OpenUrlのボタンを配置できればなんでも大丈夫です。
image.png

チャネルの数だけボタンを配置したいので、テーブルを使ってこのように作成しました。
image.png

テーブル要素の作成

取得したチャネルの情報から、アダプティブカードの要素を作成します。

選択アクションで必要な部分のみ取り出して、ループを回して文字列変数に追加して・・・とやってもよいのですが、アクションの節約のために、選択アクション1個でやっちゃいました。
image.png

選択_マップ
json(
    concat(
        '{"type":"TableRow","cells":[{"type":"TableCell","items":[{"type":"TextBlock","text":"',
        item()?['membershipType'],
        '","wrap":true}]},{"type":"TableCell","items":[{"type":"ActionSet","actions":[{"type":"Action.OpenUrl","title":"',
        item()?['displayName'],
        '","url":"',
        item()?['webUrl'],
        '"}]}]}]}'
    )
)

アダプティブカードの作成

選択アクションで作成したテーブル要素を入れ込んで、作成アクションでカード全体を完成させます。

作成
{
  "type": "AdaptiveCard",
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.4",
  "body": [
    {
      "type": "Table",
      "columns": [
        {
          "width": 1
        },
        {
          "width": 3
        }
      ],
      "rows": @{body('選択')}
    }
  ]
}

以上でフローが完成です。
説明が前後しちゃったので、全体像と見比べてみてください。

おわりに

こういうちょっとした便利を作れるのがPower Automate の醍醐味だと、個人的には思っています。
「利便性とフロー作成の手間が釣り合ってないやないかい!」というご指摘は耳にしない主義ですので悪しからず。(∵)

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?